From 65c4a588259102ff69155624bcfa47f46ca2c5fa Mon Sep 17 00:00:00 2001 From: tonihei Date: Tue, 3 Dec 2019 14:25:54 +0000 Subject: [PATCH] Use Util method to create Handler instead of using deprecated method. Calls to new Handler() without arguments are deprecated as of the latest Android version. Replace them by a Util.createHandler call similar to the ones we already have. PiperOrigin-RevId: 283532891 --- .../ext/leanback/LeanbackPlayerAdapter.java | 3 +- .../google/android/exoplayer2/Playlist.java | 2 +- .../source/CompositeMediaSource.java | 2 +- .../source/ProgressiveMediaPeriod.java | 2 +- .../exoplayer2/source/ads/AdsMediaSource.java | 3 +- .../google/android/exoplayer2/util/Util.java | 23 ++++++++--- .../video/MediaCodecVideoRenderer.java | 2 +- .../source/ClippingMediaSourceTest.java | 4 +- .../source/ConcatenatingMediaSourceTest.java | 40 +++++++++++-------- .../source/dash/DashMediaSource.java | 2 +- .../source/hls/HlsSampleStreamWrapper.java | 2 +- .../playlist/DefaultHlsPlaylistTracker.java | 3 +- .../source/smoothstreaming/SsMediaSource.java | 3 +- .../android/exoplayer2/testutil/Action.java | 5 ++- .../exoplayer2/testutil/FakeMediaPeriod.java | 3 +- .../exoplayer2/testutil/FakeMediaSource.java | 3 +- 16 files changed, 64 insertions(+), 38 deletions(-) diff --git a/extensions/leanback/src/main/java/com/google/android/exoplayer2/ext/leanback/LeanbackPlayerAdapter.java b/extensions/leanback/src/main/java/com/google/android/exoplayer2/ext/leanback/LeanbackPlayerAdapter.java index 1f990e8465..7c2285c57e 100644 --- a/extensions/leanback/src/main/java/com/google/android/exoplayer2/ext/leanback/LeanbackPlayerAdapter.java +++ b/extensions/leanback/src/main/java/com/google/android/exoplayer2/ext/leanback/LeanbackPlayerAdapter.java @@ -36,6 +36,7 @@ import com.google.android.exoplayer2.Player.DiscontinuityReason; import com.google.android.exoplayer2.Player.TimelineChangeReason; import com.google.android.exoplayer2.Timeline; import com.google.android.exoplayer2.util.ErrorMessageProvider; +import com.google.android.exoplayer2.util.Util; import com.google.android.exoplayer2.video.VideoListener; /** Leanback {@code PlayerAdapter} implementation for {@link Player}. */ @@ -71,7 +72,7 @@ public final class LeanbackPlayerAdapter extends PlayerAdapter implements Runnab this.context = context; this.player = player; this.updatePeriodMs = updatePeriodMs; - handler = new Handler(); + handler = Util.createHandler(); componentListener = new ComponentListener(); controlDispatcher = new DefaultControlDispatcher(); } diff --git a/library/core/src/main/java/com/google/android/exoplayer2/Playlist.java b/library/core/src/main/java/com/google/android/exoplayer2/Playlist.java index e73deb9b4a..b11b454d65 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/Playlist.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/Playlist.java @@ -427,7 +427,7 @@ import java.util.Set; (source, timeline) -> playlistInfoListener.onPlaylistUpdateRequested(); MediaSourceEventListener eventListener = new ForwardingEventListener(holder); childSources.put(holder, new MediaSourceAndListener(mediaSource, caller, eventListener)); - mediaSource.addEventListener(new Handler(), eventListener); + mediaSource.addEventListener(Util.createHandler(), eventListener); mediaSource.prepareSource(caller, mediaTransferListener); } diff --git a/library/core/src/main/java/com/google/android/exoplayer2/source/CompositeMediaSource.java b/library/core/src/main/java/com/google/android/exoplayer2/source/CompositeMediaSource.java index 7077416a02..424ee6299d 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/source/CompositeMediaSource.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/source/CompositeMediaSource.java @@ -46,7 +46,7 @@ public abstract class CompositeMediaSource extends BaseMediaSource { @CallSuper protected void prepareSourceInternal(@Nullable TransferListener mediaTransferListener) { this.mediaTransferListener = mediaTransferListener; - eventHandler = new Handler(); + eventHandler = Util.createHandler(); } @Override diff --git a/library/core/src/main/java/com/google/android/exoplayer2/source/ProgressiveMediaPeriod.java b/library/core/src/main/java/com/google/android/exoplayer2/source/ProgressiveMediaPeriod.java index a10c3bc0f1..aa9aaf489f 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/source/ProgressiveMediaPeriod.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/source/ProgressiveMediaPeriod.java @@ -189,7 +189,7 @@ import org.checkerframework.checker.nullness.compatqual.NullableType; .onContinueLoadingRequested(ProgressiveMediaPeriod.this); } }; - handler = new Handler(); + handler = Util.createHandler(); sampleQueueTrackIds = new TrackId[0]; sampleQueues = new SampleQueue[0]; pendingResetPositionUs = C.TIME_UNSET; diff --git a/library/core/src/main/java/com/google/android/exoplayer2/source/ads/AdsMediaSource.java b/library/core/src/main/java/com/google/android/exoplayer2/source/ads/AdsMediaSource.java index 0396a47bc3..d1b5e84fb4 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/source/ads/AdsMediaSource.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/source/ads/AdsMediaSource.java @@ -37,6 +37,7 @@ import com.google.android.exoplayer2.upstream.DataSource; import com.google.android.exoplayer2.upstream.DataSpec; import com.google.android.exoplayer2.upstream.TransferListener; import com.google.android.exoplayer2.util.Assertions; +import com.google.android.exoplayer2.util.Util; import java.io.IOException; import java.lang.annotation.Documented; import java.lang.annotation.Retention; @@ -365,7 +366,7 @@ public final class AdsMediaSource extends CompositeMediaSource { * events on the external event listener thread. */ public ComponentListener() { - playerHandler = new Handler(); + playerHandler = Util.createHandler(); } /** Releases the component listener. */ diff --git a/library/core/src/main/java/com/google/android/exoplayer2/util/Util.java b/library/core/src/main/java/com/google/android/exoplayer2/util/Util.java index 23447acddf..10fa43d89e 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/util/Util.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/util/Util.java @@ -366,6 +366,17 @@ public final class Util { /* length= */ second.length); return concatenation; } + + /** + * Creates a {@link Handler} on the current {@link Looper} thread. + * + *

If the current thread doesn't have a {@link Looper}, the application's main thread {@link + * Looper} is used. + */ + public static Handler createHandler() { + return createHandler(/* callback= */ null); + } + /** * Creates a {@link Handler} with the specified {@link Handler.Callback} on the current {@link * Looper} thread. The method accepts partially initialized objects as callback under the @@ -375,10 +386,11 @@ public final class Util { *

If the current thread doesn't have a {@link Looper}, the application's main thread {@link * Looper} is used. * - * @param callback A {@link Handler.Callback}. May be a partially initialized class. + * @param callback A {@link Handler.Callback}. May be a partially initialized class, or null if no + * callback is required. * @return A {@link Handler} with the specified callback on the current {@link Looper} thread. */ - public static Handler createHandler(Handler.@UnknownInitialization Callback callback) { + public static Handler createHandler(@Nullable Handler.@UnknownInitialization Callback callback) { return createHandler(getLooper(), callback); } @@ -389,12 +401,13 @@ public final class Util { * initialized. * * @param looper A {@link Looper} to run the callback on. - * @param callback A {@link Handler.Callback}. May be a partially initialized class. + * @param callback A {@link Handler.Callback}. May be a partially initialized class, or null if no + * callback is required. * @return A {@link Handler} with the specified callback on the current {@link Looper} thread. */ @SuppressWarnings({"nullness:argument.type.incompatible", "nullness:return.type.incompatible"}) public static Handler createHandler( - Looper looper, Handler.@UnknownInitialization Callback callback) { + Looper looper, @Nullable Handler.@UnknownInitialization Callback callback) { return new Handler(looper, callback); } @@ -1988,7 +2001,7 @@ public final class Util { @Nullable DrmSessionManager drmSessionManager) { Renderer[] renderers = renderersFactory.createRenderers( - new Handler(), + Util.createHandler(), new VideoRendererEventListener() {}, new AudioRendererEventListener() {}, (cues) -> {}, diff --git a/library/core/src/main/java/com/google/android/exoplayer2/video/MediaCodecVideoRenderer.java b/library/core/src/main/java/com/google/android/exoplayer2/video/MediaCodecVideoRenderer.java index dd125cc7b0..252e73366c 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/video/MediaCodecVideoRenderer.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/video/MediaCodecVideoRenderer.java @@ -1799,7 +1799,7 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer { private final class OnFrameRenderedListenerV23 implements MediaCodec.OnFrameRenderedListener { private OnFrameRenderedListenerV23(MediaCodec codec) { - codec.setOnFrameRenderedListener(this, new Handler()); + codec.setOnFrameRenderedListener(/* listener= */ this, Util.createHandler()); } @Override diff --git a/library/core/src/test/java/com/google/android/exoplayer2/source/ClippingMediaSourceTest.java b/library/core/src/test/java/com/google/android/exoplayer2/source/ClippingMediaSourceTest.java index f13b6a82e5..57ed9332c2 100644 --- a/library/core/src/test/java/com/google/android/exoplayer2/source/ClippingMediaSourceTest.java +++ b/library/core/src/test/java/com/google/android/exoplayer2/source/ClippingMediaSourceTest.java @@ -18,7 +18,6 @@ package com.google.android.exoplayer2.source; import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.fail; -import android.os.Handler; import androidx.annotation.Nullable; import androidx.test.ext.junit.runners.AndroidJUnit4; import com.google.android.exoplayer2.C; @@ -37,6 +36,7 @@ import com.google.android.exoplayer2.testutil.MediaSourceTestRunner; import com.google.android.exoplayer2.testutil.TimelineAsserts; import com.google.android.exoplayer2.upstream.Allocator; import com.google.android.exoplayer2.upstream.TransferListener; +import com.google.android.exoplayer2.util.Util; import java.io.IOException; import org.junit.Before; import org.junit.Test; @@ -553,7 +553,7 @@ public final class ClippingMediaSourceTest { testRunner.runOnPlaybackThread( () -> clippingMediaSource.addEventListener( - new Handler(), + Util.createHandler(), new MediaSourceEventListener() { @Override public void onDownstreamFormatChanged( diff --git a/library/core/src/test/java/com/google/android/exoplayer2/source/ConcatenatingMediaSourceTest.java b/library/core/src/test/java/com/google/android/exoplayer2/source/ConcatenatingMediaSourceTest.java index d63c85ac71..d2330f200e 100644 --- a/library/core/src/test/java/com/google/android/exoplayer2/source/ConcatenatingMediaSourceTest.java +++ b/library/core/src/test/java/com/google/android/exoplayer2/source/ConcatenatingMediaSourceTest.java @@ -19,7 +19,6 @@ import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.fail; import static org.mockito.Mockito.mock; -import android.os.Handler; import androidx.test.ext.junit.runners.AndroidJUnit4; import com.google.android.exoplayer2.C; import com.google.android.exoplayer2.Player; @@ -34,6 +33,7 @@ import com.google.android.exoplayer2.testutil.FakeTimeline; import com.google.android.exoplayer2.testutil.FakeTimeline.TimelineWindowDefinition; import com.google.android.exoplayer2.testutil.MediaSourceTestRunner; import com.google.android.exoplayer2.testutil.TimelineAsserts; +import com.google.android.exoplayer2.util.Util; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; @@ -414,7 +414,7 @@ public final class ConcatenatingMediaSourceTest { dummyMainThread.runOnMainThread( () -> mediaSource.addMediaSource( - createFakeMediaSource(), new Handler(), runnableInvoked::countDown)); + createFakeMediaSource(), Util.createHandler(), runnableInvoked::countDown)); runnableInvoked.await(MediaSourceTestRunner.TIMEOUT_MS, TimeUnit.MILLISECONDS); dummyMainThread.release(); @@ -430,7 +430,7 @@ public final class ConcatenatingMediaSourceTest { () -> mediaSource.addMediaSources( Arrays.asList(new MediaSource[] {createFakeMediaSource(), createFakeMediaSource()}), - new Handler(), + Util.createHandler(), runnableInvoked::countDown)); runnableInvoked.await(MediaSourceTestRunner.TIMEOUT_MS, TimeUnit.MILLISECONDS); dummyMainThread.release(); @@ -446,7 +446,10 @@ public final class ConcatenatingMediaSourceTest { dummyMainThread.runOnMainThread( () -> mediaSource.addMediaSource( - /* index */ 0, createFakeMediaSource(), new Handler(), runnableInvoked::countDown)); + /* index */ 0, + createFakeMediaSource(), + Util.createHandler(), + runnableInvoked::countDown)); runnableInvoked.await(MediaSourceTestRunner.TIMEOUT_MS, TimeUnit.MILLISECONDS); dummyMainThread.release(); @@ -463,7 +466,7 @@ public final class ConcatenatingMediaSourceTest { mediaSource.addMediaSources( /* index */ 0, Arrays.asList(new MediaSource[] {createFakeMediaSource(), createFakeMediaSource()}), - new Handler(), + Util.createHandler(), runnableInvoked::countDown)); runnableInvoked.await(MediaSourceTestRunner.TIMEOUT_MS, TimeUnit.MILLISECONDS); dummyMainThread.release(); @@ -479,7 +482,8 @@ public final class ConcatenatingMediaSourceTest { dummyMainThread.runOnMainThread( () -> { mediaSource.addMediaSource(createFakeMediaSource()); - mediaSource.removeMediaSource(/* index */ 0, new Handler(), runnableInvoked::countDown); + mediaSource.removeMediaSource( + /* index */ 0, Util.createHandler(), runnableInvoked::countDown); }); runnableInvoked.await(MediaSourceTestRunner.TIMEOUT_MS, TimeUnit.MILLISECONDS); dummyMainThread.release(); @@ -497,7 +501,7 @@ public final class ConcatenatingMediaSourceTest { mediaSource.addMediaSources( Arrays.asList(new MediaSource[] {createFakeMediaSource(), createFakeMediaSource()})); mediaSource.moveMediaSource( - /* fromIndex */ 1, /* toIndex */ 0, new Handler(), runnableInvoked::countDown); + /* fromIndex */ 1, /* toIndex */ 0, Util.createHandler(), runnableInvoked::countDown); }); runnableInvoked.await(MediaSourceTestRunner.TIMEOUT_MS, TimeUnit.MILLISECONDS); dummyMainThread.release(); @@ -513,7 +517,8 @@ public final class ConcatenatingMediaSourceTest { final TimelineGrabber timelineGrabber = new TimelineGrabber(testRunner); dummyMainThread.runOnMainThread( () -> - mediaSource.addMediaSource(createFakeMediaSource(), new Handler(), timelineGrabber)); + mediaSource.addMediaSource( + createFakeMediaSource(), Util.createHandler(), timelineGrabber)); Timeline timeline = timelineGrabber.assertTimelineChangeBlocking(); assertThat(timeline.getWindowCount()).isEqualTo(1); } finally { @@ -532,7 +537,7 @@ public final class ConcatenatingMediaSourceTest { mediaSource.addMediaSources( Arrays.asList( new MediaSource[] {createFakeMediaSource(), createFakeMediaSource()}), - new Handler(), + Util.createHandler(), timelineGrabber)); Timeline timeline = timelineGrabber.assertTimelineChangeBlocking(); assertThat(timeline.getWindowCount()).isEqualTo(2); @@ -550,7 +555,7 @@ public final class ConcatenatingMediaSourceTest { dummyMainThread.runOnMainThread( () -> mediaSource.addMediaSource( - /* index */ 0, createFakeMediaSource(), new Handler(), timelineGrabber)); + /* index */ 0, createFakeMediaSource(), Util.createHandler(), timelineGrabber)); Timeline timeline = timelineGrabber.assertTimelineChangeBlocking(); assertThat(timeline.getWindowCount()).isEqualTo(1); } finally { @@ -570,7 +575,7 @@ public final class ConcatenatingMediaSourceTest { /* index */ 0, Arrays.asList( new MediaSource[] {createFakeMediaSource(), createFakeMediaSource()}), - new Handler(), + Util.createHandler(), timelineGrabber)); Timeline timeline = timelineGrabber.assertTimelineChangeBlocking(); assertThat(timeline.getWindowCount()).isEqualTo(2); @@ -589,7 +594,8 @@ public final class ConcatenatingMediaSourceTest { final TimelineGrabber timelineGrabber = new TimelineGrabber(testRunner); dummyMainThread.runOnMainThread( - () -> mediaSource.removeMediaSource(/* index */ 0, new Handler(), timelineGrabber)); + () -> + mediaSource.removeMediaSource(/* index */ 0, Util.createHandler(), timelineGrabber)); Timeline timeline = timelineGrabber.assertTimelineChangeBlocking(); assertThat(timeline.getWindowCount()).isEqualTo(0); } finally { @@ -613,7 +619,7 @@ public final class ConcatenatingMediaSourceTest { dummyMainThread.runOnMainThread( () -> mediaSource.moveMediaSource( - /* fromIndex */ 1, /* toIndex */ 0, new Handler(), timelineGrabber)); + /* fromIndex */ 1, /* toIndex */ 0, Util.createHandler(), timelineGrabber)); Timeline timeline = timelineGrabber.assertTimelineChangeBlocking(); assertThat(timeline.getWindowCount()).isEqualTo(2); } finally { @@ -634,7 +640,7 @@ public final class ConcatenatingMediaSourceTest { mediaSource.moveMediaSource( /* currentIndex= */ 0, /* newIndex= */ 1, - new Handler(), + Util.createHandler(), callbackCalledCondition::countDown); mediaSource.releaseSource(caller); }); @@ -886,7 +892,7 @@ public final class ConcatenatingMediaSourceTest { testRunner.prepareSource(); final TimelineGrabber timelineGrabber = new TimelineGrabber(testRunner); - dummyMainThread.runOnMainThread(() -> mediaSource.clear(new Handler(), timelineGrabber)); + dummyMainThread.runOnMainThread(() -> mediaSource.clear(Util.createHandler(), timelineGrabber)); Timeline timeline = timelineGrabber.assertTimelineChangeBlocking(); assertThat(timeline.isEmpty()).isTrue(); @@ -1038,7 +1044,7 @@ public final class ConcatenatingMediaSourceTest { () -> mediaSource.setShuffleOrder( new ShuffleOrder.UnshuffledShuffleOrder(/* length= */ 0), - new Handler(), + Util.createHandler(), runnableInvoked::countDown)); runnableInvoked.await(MediaSourceTestRunner.TIMEOUT_MS, TimeUnit.MILLISECONDS); dummyMainThread.release(); @@ -1058,7 +1064,7 @@ public final class ConcatenatingMediaSourceTest { () -> mediaSource.setShuffleOrder( new ShuffleOrder.UnshuffledShuffleOrder(/* length= */ 3), - new Handler(), + Util.createHandler(), timelineGrabber)); Timeline timeline = timelineGrabber.assertTimelineChangeBlocking(); assertThat(timeline.getFirstWindowIndex(/* shuffleModeEnabled= */ true)).isEqualTo(0); diff --git a/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/DashMediaSource.java b/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/DashMediaSource.java index 352131d70a..e45b134cdb 100644 --- a/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/DashMediaSource.java +++ b/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/DashMediaSource.java @@ -663,7 +663,7 @@ public final class DashMediaSource extends BaseMediaSource { } else { dataSource = manifestDataSourceFactory.createDataSource(); loader = new Loader("Loader:DashMediaSource"); - handler = new Handler(); + handler = Util.createHandler(); startLoadingManifest(); } } diff --git a/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper.java b/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper.java index 18465bcaf7..d99bb817c1 100644 --- a/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper.java +++ b/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper.java @@ -219,7 +219,7 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull; @SuppressWarnings("nullness:methodref.receiver.bound.invalid") Runnable onTracksEndedRunnable = this::onTracksEnded; this.onTracksEndedRunnable = onTracksEndedRunnable; - handler = new Handler(); + handler = Util.createHandler(); lastSeekPositionUs = positionUs; pendingResetPositionUs = positionUs; } diff --git a/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/DefaultHlsPlaylistTracker.java b/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/DefaultHlsPlaylistTracker.java index f4fa2ad030..e624027d75 100644 --- a/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/DefaultHlsPlaylistTracker.java +++ b/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/DefaultHlsPlaylistTracker.java @@ -31,6 +31,7 @@ import com.google.android.exoplayer2.upstream.Loader; import com.google.android.exoplayer2.upstream.Loader.LoadErrorAction; import com.google.android.exoplayer2.upstream.ParsingLoadable; import com.google.android.exoplayer2.util.Assertions; +import com.google.android.exoplayer2.util.Util; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; @@ -117,7 +118,7 @@ public final class DefaultHlsPlaylistTracker Uri initialPlaylistUri, EventDispatcher eventDispatcher, PrimaryPlaylistListener primaryPlaylistListener) { - this.playlistRefreshHandler = new Handler(); + this.playlistRefreshHandler = Util.createHandler(); this.eventDispatcher = eventDispatcher; this.primaryPlaylistListener = primaryPlaylistListener; ParsingLoadable masterPlaylistLoadable = diff --git a/library/smoothstreaming/src/main/java/com/google/android/exoplayer2/source/smoothstreaming/SsMediaSource.java b/library/smoothstreaming/src/main/java/com/google/android/exoplayer2/source/smoothstreaming/SsMediaSource.java index 4c05353186..882e82753e 100644 --- a/library/smoothstreaming/src/main/java/com/google/android/exoplayer2/source/smoothstreaming/SsMediaSource.java +++ b/library/smoothstreaming/src/main/java/com/google/android/exoplayer2/source/smoothstreaming/SsMediaSource.java @@ -50,6 +50,7 @@ import com.google.android.exoplayer2.upstream.LoaderErrorThrower; import com.google.android.exoplayer2.upstream.ParsingLoadable; import com.google.android.exoplayer2.upstream.TransferListener; import com.google.android.exoplayer2.util.Assertions; +import com.google.android.exoplayer2.util.Util; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -560,7 +561,7 @@ public final class SsMediaSource extends BaseMediaSource manifestDataSource = manifestDataSourceFactory.createDataSource(); manifestLoader = new Loader("Loader:Manifest"); manifestLoaderErrorThrower = manifestLoader; - manifestRefreshHandler = new Handler(); + manifestRefreshHandler = Util.createHandler(); startLoadingManifest(); } } diff --git a/testutils/src/main/java/com/google/android/exoplayer2/testutil/Action.java b/testutils/src/main/java/com/google/android/exoplayer2/testutil/Action.java index b65accdf3f..060bbe90ed 100644 --- a/testutils/src/main/java/com/google/android/exoplayer2/testutil/Action.java +++ b/testutils/src/main/java/com/google/android/exoplayer2/testutil/Action.java @@ -37,6 +37,7 @@ import com.google.android.exoplayer2.trackselection.DefaultTrackSelector.Paramet import com.google.android.exoplayer2.util.ConditionVariable; import com.google.android.exoplayer2.util.HandlerWrapper; import com.google.android.exoplayer2.util.Log; +import com.google.android.exoplayer2.util.Util; /** Base class for actions to perform during playback tests. */ public abstract class Action { @@ -422,7 +423,7 @@ public abstract class Action { } else { message.setPosition(positionMs); } - message.setHandler(new Handler()); + message.setHandler(Util.createHandler()); message.setDeleteAfterDelivery(deleteAfterDelivery); message.send(); } @@ -503,7 +504,7 @@ public abstract class Action { final Surface surface, final HandlerWrapper handler, final ActionNode nextAction) { - Handler testThreadHandler = new Handler(); + Handler testThreadHandler = Util.createHandler(); // Schedule a message on the playback thread to ensure the player is paused immediately. player .createMessage( diff --git a/testutils/src/main/java/com/google/android/exoplayer2/testutil/FakeMediaPeriod.java b/testutils/src/main/java/com/google/android/exoplayer2/testutil/FakeMediaPeriod.java index bcc96ef47e..1b2a52b1e6 100644 --- a/testutils/src/main/java/com/google/android/exoplayer2/testutil/FakeMediaPeriod.java +++ b/testutils/src/main/java/com/google/android/exoplayer2/testutil/FakeMediaPeriod.java @@ -30,6 +30,7 @@ import com.google.android.exoplayer2.source.TrackGroup; import com.google.android.exoplayer2.source.TrackGroupArray; import com.google.android.exoplayer2.trackselection.TrackSelection; import com.google.android.exoplayer2.upstream.DataSpec; +import com.google.android.exoplayer2.util.Util; import java.io.IOException; import java.util.Collections; @@ -126,7 +127,7 @@ public class FakeMediaPeriod implements MediaPeriod { SystemClock.elapsedRealtime()); prepareCallback = callback; if (deferOnPrepared) { - playerHandler = new Handler(); + playerHandler = Util.createHandler(); } else { finishPreparation(); } diff --git a/testutils/src/main/java/com/google/android/exoplayer2/testutil/FakeMediaSource.java b/testutils/src/main/java/com/google/android/exoplayer2/testutil/FakeMediaSource.java index f477a33ba8..b347ecc0b7 100644 --- a/testutils/src/main/java/com/google/android/exoplayer2/testutil/FakeMediaSource.java +++ b/testutils/src/main/java/com/google/android/exoplayer2/testutil/FakeMediaSource.java @@ -37,6 +37,7 @@ import com.google.android.exoplayer2.upstream.Allocator; import com.google.android.exoplayer2.upstream.DataSpec; import com.google.android.exoplayer2.upstream.TransferListener; import com.google.android.exoplayer2.util.Assertions; +import com.google.android.exoplayer2.util.Util; import java.io.IOException; import java.util.ArrayList; import java.util.Collections; @@ -97,7 +98,7 @@ public class FakeMediaSource extends BaseMediaSource { transferListener = mediaTransferListener; preparedSource = true; releasedSource = false; - sourceInfoRefreshHandler = new Handler(); + sourceInfoRefreshHandler = Util.createHandler(); if (timeline != null) { finishSourcePreparation(); }