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 6538160b8b..e385cd52e9 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
@@ -72,7 +72,7 @@ public final class LeanbackPlayerAdapter extends PlayerAdapter implements Runnab
this.context = context;
this.player = player;
this.updatePeriodMs = updatePeriodMs;
- handler = Util.createHandlerForCurrentOrMainLooper();
+ handler = Util.createHandler();
componentListener = new ComponentListener();
controlDispatcher = new DefaultControlDispatcher();
}
diff --git a/extensions/mediasession/src/main/java/com/google/android/exoplayer2/ext/mediasession/MediaSessionConnector.java b/extensions/mediasession/src/main/java/com/google/android/exoplayer2/ext/mediasession/MediaSessionConnector.java
index f3edfa3545..b74ad9701f 100644
--- a/extensions/mediasession/src/main/java/com/google/android/exoplayer2/ext/mediasession/MediaSessionConnector.java
+++ b/extensions/mediasession/src/main/java/com/google/android/exoplayer2/ext/mediasession/MediaSessionConnector.java
@@ -437,7 +437,7 @@ public final class MediaSessionConnector {
*/
public MediaSessionConnector(MediaSessionCompat mediaSession) {
this.mediaSession = mediaSession;
- looper = Util.getCurrentOrMainLooper();
+ looper = Util.getLooper();
componentListener = new ComponentListener();
commandReceivers = new ArrayList<>();
customCommandReceivers = new ArrayList<>();
diff --git a/library/common/src/main/java/com/google/android/exoplayer2/util/Util.java b/library/common/src/main/java/com/google/android/exoplayer2/util/Util.java
index 96c2d3622a..09303c4a9c 100644
--- a/library/common/src/main/java/com/google/android/exoplayer2/util/Util.java
+++ b/library/common/src/main/java/com/google/android/exoplayer2/util/Util.java
@@ -399,8 +399,8 @@ public final class Util {
*
If the current thread doesn't have a {@link Looper}, the application's main thread {@link
* Looper} is used.
*/
- public static Handler createHandlerForCurrentOrMainLooper() {
- return createHandlerForCurrentOrMainLooper(/* callback= */ null);
+ public static Handler createHandler() {
+ return createHandler(/* callback= */ null);
}
/**
@@ -416,9 +416,8 @@ public final class Util {
* callback is required.
* @return A {@link Handler} with the specified callback on the current {@link Looper} thread.
*/
- public static Handler createHandlerForCurrentOrMainLooper(
- @Nullable Handler.@UnknownInitialization Callback callback) {
- return createHandler(getCurrentOrMainLooper(), callback);
+ public static Handler createHandler(@Nullable Handler.@UnknownInitialization Callback callback) {
+ return createHandler(getLooper(), callback);
}
/**
@@ -442,8 +441,8 @@ public final class Util {
* Returns the {@link Looper} associated with the current thread, or the {@link Looper} of the
* application's main thread if the current thread doesn't have a {@link Looper}.
*/
- public static Looper getCurrentOrMainLooper() {
- @Nullable Looper myLooper = Looper.myLooper();
+ public static Looper getLooper() {
+ Looper myLooper = Looper.myLooper();
return myLooper != null ? myLooper : Looper.getMainLooper();
}
diff --git a/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayer.java b/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayer.java
index 9990e77f3a..b4cd9a399d 100644
--- a/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayer.java
+++ b/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayer.java
@@ -209,7 +209,7 @@ public interface ExoPlayer extends Player {
this.mediaSourceFactory = mediaSourceFactory;
this.loadControl = loadControl;
this.bandwidthMeter = bandwidthMeter;
- looper = Util.getCurrentOrMainLooper();
+ looper = Util.getLooper();
useLazyPreparation = true;
seekParameters = SeekParameters.DEFAULT;
clock = Clock.DEFAULT;
diff --git a/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayerFactory.java b/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayerFactory.java
index dcdce89489..2c07593aaa 100644
--- a/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayerFactory.java
+++ b/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayerFactory.java
@@ -101,7 +101,11 @@ public final class ExoPlayerFactory {
TrackSelector trackSelector,
LoadControl loadControl) {
return newSimpleInstance(
- context, renderersFactory, trackSelector, loadControl, Util.getCurrentOrMainLooper());
+ context,
+ renderersFactory,
+ trackSelector,
+ loadControl,
+ Util.getLooper());
}
/** @deprecated Use {@link SimpleExoPlayer.Builder} instead. */
@@ -120,7 +124,7 @@ public final class ExoPlayerFactory {
loadControl,
bandwidthMeter,
new AnalyticsCollector(Clock.DEFAULT),
- Util.getCurrentOrMainLooper());
+ Util.getLooper());
}
/** @deprecated Use {@link SimpleExoPlayer.Builder} instead. */
@@ -138,7 +142,7 @@ public final class ExoPlayerFactory {
trackSelector,
loadControl,
analyticsCollector,
- Util.getCurrentOrMainLooper());
+ Util.getLooper());
}
/** @deprecated Use {@link SimpleExoPlayer.Builder} instead. */
@@ -216,8 +220,7 @@ public final class ExoPlayerFactory {
@SuppressWarnings("deprecation")
public static ExoPlayer newInstance(
Context context, Renderer[] renderers, TrackSelector trackSelector, LoadControl loadControl) {
- return newInstance(
- context, renderers, trackSelector, loadControl, Util.getCurrentOrMainLooper());
+ return newInstance(context, renderers, trackSelector, loadControl, Util.getLooper());
}
/** @deprecated Use {@link ExoPlayer.Builder} instead. */
diff --git a/library/core/src/main/java/com/google/android/exoplayer2/MediaSourceList.java b/library/core/src/main/java/com/google/android/exoplayer2/MediaSourceList.java
index cffad118ad..e690ea3626 100644
--- a/library/core/src/main/java/com/google/android/exoplayer2/MediaSourceList.java
+++ b/library/core/src/main/java/com/google/android/exoplayer2/MediaSourceList.java
@@ -437,8 +437,8 @@ import java.util.Set;
(source, timeline) -> mediaSourceListInfoListener.onPlaylistUpdateRequested();
ForwardingEventListener eventListener = new ForwardingEventListener(holder);
childSources.put(holder, new MediaSourceAndListener(mediaSource, caller, eventListener));
- mediaSource.addEventListener(Util.createHandlerForCurrentOrMainLooper(), eventListener);
- mediaSource.addDrmEventListener(Util.createHandlerForCurrentOrMainLooper(), eventListener);
+ mediaSource.addEventListener(Util.createHandler(), eventListener);
+ mediaSource.addDrmEventListener(Util.createHandler(), eventListener);
mediaSource.prepareSource(caller, mediaTransferListener);
}
diff --git a/library/core/src/main/java/com/google/android/exoplayer2/SimpleExoPlayer.java b/library/core/src/main/java/com/google/android/exoplayer2/SimpleExoPlayer.java
index db2602ea85..d1f0cfc798 100644
--- a/library/core/src/main/java/com/google/android/exoplayer2/SimpleExoPlayer.java
+++ b/library/core/src/main/java/com/google/android/exoplayer2/SimpleExoPlayer.java
@@ -199,7 +199,7 @@ public class SimpleExoPlayer extends BasePlayer
this.loadControl = loadControl;
this.bandwidthMeter = bandwidthMeter;
this.analyticsCollector = analyticsCollector;
- looper = Util.getCurrentOrMainLooper();
+ looper = Util.getLooper();
audioAttributes = AudioAttributes.DEFAULT;
wakeMode = C.WAKE_MODE_NONE;
videoScalingMode = Renderer.VIDEO_SCALING_MODE_DEFAULT;
diff --git a/library/core/src/main/java/com/google/android/exoplayer2/audio/AudioCapabilitiesReceiver.java b/library/core/src/main/java/com/google/android/exoplayer2/audio/AudioCapabilitiesReceiver.java
index c9c78a7422..991ed9ee97 100644
--- a/library/core/src/main/java/com/google/android/exoplayer2/audio/AudioCapabilitiesReceiver.java
+++ b/library/core/src/main/java/com/google/android/exoplayer2/audio/AudioCapabilitiesReceiver.java
@@ -65,7 +65,7 @@ public final class AudioCapabilitiesReceiver {
context = context.getApplicationContext();
this.context = context;
this.listener = Assertions.checkNotNull(listener);
- handler = Util.createHandlerForCurrentOrMainLooper();
+ handler = new Handler(Util.getLooper());
receiver = Util.SDK_INT >= 21 ? new HdmiAudioPlugBroadcastReceiver() : null;
Uri externalSurroundSoundUri = AudioCapabilities.getExternalSurroundSoundGlobalSettingUri();
externalSurroundSoundSettingObserver =
diff --git a/library/core/src/main/java/com/google/android/exoplayer2/offline/DownloadHelper.java b/library/core/src/main/java/com/google/android/exoplayer2/offline/DownloadHelper.java
index 51b939f6ce..11933e7834 100644
--- a/library/core/src/main/java/com/google/android/exoplayer2/offline/DownloadHelper.java
+++ b/library/core/src/main/java/com/google/android/exoplayer2/offline/DownloadHelper.java
@@ -156,7 +156,7 @@ public final class DownloadHelper {
public static RendererCapabilities[] getRendererCapabilities(RenderersFactory renderersFactory) {
Renderer[] renderers =
renderersFactory.createRenderers(
- Util.createHandlerForCurrentOrMainLooper(),
+ Util.createHandler(),
new VideoRendererEventListener() {},
new AudioRendererEventListener() {},
(cues) -> {},
@@ -501,7 +501,7 @@ public final class DownloadHelper {
this.rendererCapabilities = rendererCapabilities;
this.scratchSet = new SparseIntArray();
trackSelector.init(/* listener= */ () -> {}, new DummyBandwidthMeter());
- callbackHandler = Util.createHandlerForCurrentOrMainLooper();
+ callbackHandler = new Handler(Util.getLooper());
window = new Timeline.Window();
}
@@ -970,8 +970,7 @@ public final class DownloadHelper {
allocator = new DefaultAllocator(true, C.DEFAULT_BUFFER_SEGMENT_SIZE);
pendingMediaPeriods = new ArrayList<>();
@SuppressWarnings("methodref.receiver.bound.invalid")
- Handler downloadThreadHandler =
- Util.createHandlerForCurrentOrMainLooper(this::handleDownloadHelperCallbackMessage);
+ Handler downloadThreadHandler = Util.createHandler(this::handleDownloadHelperCallbackMessage);
this.downloadHelperHandler = downloadThreadHandler;
mediaSourceThread = new HandlerThread("ExoPlayer:DownloadHelper");
mediaSourceThread.start();
diff --git a/library/core/src/main/java/com/google/android/exoplayer2/offline/DownloadManager.java b/library/core/src/main/java/com/google/android/exoplayer2/offline/DownloadManager.java
index 50df4a0e8a..12f8182980 100644
--- a/library/core/src/main/java/com/google/android/exoplayer2/offline/DownloadManager.java
+++ b/library/core/src/main/java/com/google/android/exoplayer2/offline/DownloadManager.java
@@ -228,7 +228,7 @@ public final class DownloadManager {
listeners = new CopyOnWriteArraySet<>();
@SuppressWarnings("methodref.receiver.bound.invalid")
- Handler mainHandler = Util.createHandlerForCurrentOrMainLooper(this::handleMainMessage);
+ Handler mainHandler = Util.createHandler(this::handleMainMessage);
this.applicationHandler = mainHandler;
HandlerThread internalThread = new HandlerThread("ExoPlayer:DownloadManager");
internalThread.start();
diff --git a/library/core/src/main/java/com/google/android/exoplayer2/offline/DownloadService.java b/library/core/src/main/java/com/google/android/exoplayer2/offline/DownloadService.java
index 527c51ea83..a0c08071db 100644
--- a/library/core/src/main/java/com/google/android/exoplayer2/offline/DownloadService.java
+++ b/library/core/src/main/java/com/google/android/exoplayer2/offline/DownloadService.java
@@ -950,7 +950,7 @@ public abstract class DownloadService extends Service {
// DownloadService.getForegroundNotification, and concrete subclass implementations may
// not anticipate the possibility of this method being called before their onCreate
// implementation has finished executing.
- Util.createHandlerForCurrentOrMainLooper()
+ Util.createHandler()
.postAtFrontOfQueue(
() -> downloadService.notifyDownloads(downloadManager.getCurrentDownloads()));
}
diff --git a/library/core/src/main/java/com/google/android/exoplayer2/scheduler/RequirementsWatcher.java b/library/core/src/main/java/com/google/android/exoplayer2/scheduler/RequirementsWatcher.java
index f0a9ae3efc..849511ef3f 100644
--- a/library/core/src/main/java/com/google/android/exoplayer2/scheduler/RequirementsWatcher.java
+++ b/library/core/src/main/java/com/google/android/exoplayer2/scheduler/RequirementsWatcher.java
@@ -71,7 +71,7 @@ public final class RequirementsWatcher {
this.context = context.getApplicationContext();
this.listener = listener;
this.requirements = requirements;
- handler = Util.createHandlerForCurrentOrMainLooper();
+ handler = new Handler(Util.getLooper());
}
/**
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 6693e53abe..b742d3b431 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
@@ -48,7 +48,7 @@ public abstract class CompositeMediaSource extends BaseMediaSource {
@CallSuper
protected void prepareSourceInternal(@Nullable TransferListener mediaTransferListener) {
this.mediaTransferListener = mediaTransferListener;
- eventHandler = Util.createHandlerForCurrentOrMainLooper();
+ 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 25283a0ecf..d879671c83 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
@@ -192,7 +192,7 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
.onContinueLoadingRequested(ProgressiveMediaPeriod.this);
}
};
- handler = Util.createHandlerForCurrentOrMainLooper();
+ 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 3688c63ec1..27df9a66f3 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
@@ -336,7 +336,7 @@ public final class AdsMediaSource extends CompositeMediaSource {
* events on the external event listener thread.
*/
public ComponentListener() {
- playerHandler = Util.createHandlerForCurrentOrMainLooper();
+ playerHandler = Util.createHandler();
}
/** Releases the component listener. */
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 814937717e..aefd52ab11 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
@@ -1763,7 +1763,7 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer {
private final Handler handler;
public OnFrameRenderedListenerV23(MediaCodec codec) {
- handler = Util.createHandlerForCurrentOrMainLooper(/* callback= */ this);
+ handler = Util.createHandler(/* callback= */ this);
codec.setOnFrameRenderedListener(/* listener= */ this, handler);
}
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 4f9331be62..d3e85233e9 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
@@ -599,7 +599,7 @@ public final class ClippingMediaSourceTest {
testRunner.runOnPlaybackThread(
() ->
clippingMediaSource.addEventListener(
- Util.createHandlerForCurrentOrMainLooper(),
+ 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 90e1eed47f..cf2e3e879d 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
@@ -412,9 +412,7 @@ public final class ConcatenatingMediaSourceTest {
dummyMainThread.runOnMainThread(
() ->
mediaSource.addMediaSource(
- createFakeMediaSource(),
- Util.createHandlerForCurrentOrMainLooper(),
- runnableInvoked::countDown));
+ createFakeMediaSource(), Util.createHandler(), runnableInvoked::countDown));
runnableInvoked.await(MediaSourceTestRunner.TIMEOUT_MS, TimeUnit.MILLISECONDS);
dummyMainThread.release();
@@ -430,7 +428,7 @@ public final class ConcatenatingMediaSourceTest {
() ->
mediaSource.addMediaSources(
Arrays.asList(new MediaSource[] {createFakeMediaSource(), createFakeMediaSource()}),
- Util.createHandlerForCurrentOrMainLooper(),
+ Util.createHandler(),
runnableInvoked::countDown));
runnableInvoked.await(MediaSourceTestRunner.TIMEOUT_MS, TimeUnit.MILLISECONDS);
dummyMainThread.release();
@@ -448,7 +446,7 @@ public final class ConcatenatingMediaSourceTest {
mediaSource.addMediaSource(
/* index */ 0,
createFakeMediaSource(),
- Util.createHandlerForCurrentOrMainLooper(),
+ Util.createHandler(),
runnableInvoked::countDown));
runnableInvoked.await(MediaSourceTestRunner.TIMEOUT_MS, TimeUnit.MILLISECONDS);
dummyMainThread.release();
@@ -466,7 +464,7 @@ public final class ConcatenatingMediaSourceTest {
mediaSource.addMediaSources(
/* index */ 0,
Arrays.asList(new MediaSource[] {createFakeMediaSource(), createFakeMediaSource()}),
- Util.createHandlerForCurrentOrMainLooper(),
+ Util.createHandler(),
runnableInvoked::countDown));
runnableInvoked.await(MediaSourceTestRunner.TIMEOUT_MS, TimeUnit.MILLISECONDS);
dummyMainThread.release();
@@ -483,9 +481,7 @@ public final class ConcatenatingMediaSourceTest {
() -> {
mediaSource.addMediaSource(createFakeMediaSource());
mediaSource.removeMediaSource(
- /* index */ 0,
- Util.createHandlerForCurrentOrMainLooper(),
- runnableInvoked::countDown);
+ /* index */ 0, Util.createHandler(), runnableInvoked::countDown);
});
runnableInvoked.await(MediaSourceTestRunner.TIMEOUT_MS, TimeUnit.MILLISECONDS);
dummyMainThread.release();
@@ -503,10 +499,7 @@ public final class ConcatenatingMediaSourceTest {
mediaSource.addMediaSources(
Arrays.asList(new MediaSource[] {createFakeMediaSource(), createFakeMediaSource()}));
mediaSource.moveMediaSource(
- /* fromIndex */ 1, /* toIndex */
- 0,
- Util.createHandlerForCurrentOrMainLooper(),
- runnableInvoked::countDown);
+ /* fromIndex */ 1, /* toIndex */ 0, Util.createHandler(), runnableInvoked::countDown);
});
runnableInvoked.await(MediaSourceTestRunner.TIMEOUT_MS, TimeUnit.MILLISECONDS);
dummyMainThread.release();
@@ -523,9 +516,7 @@ public final class ConcatenatingMediaSourceTest {
dummyMainThread.runOnMainThread(
() ->
mediaSource.addMediaSource(
- createFakeMediaSource(),
- Util.createHandlerForCurrentOrMainLooper(),
- timelineGrabber));
+ createFakeMediaSource(), Util.createHandler(), timelineGrabber));
Timeline timeline = timelineGrabber.assertTimelineChangeBlocking();
assertThat(timeline.getWindowCount()).isEqualTo(1);
} finally {
@@ -544,7 +535,7 @@ public final class ConcatenatingMediaSourceTest {
mediaSource.addMediaSources(
Arrays.asList(
new MediaSource[] {createFakeMediaSource(), createFakeMediaSource()}),
- Util.createHandlerForCurrentOrMainLooper(),
+ Util.createHandler(),
timelineGrabber));
Timeline timeline = timelineGrabber.assertTimelineChangeBlocking();
assertThat(timeline.getWindowCount()).isEqualTo(2);
@@ -562,10 +553,7 @@ public final class ConcatenatingMediaSourceTest {
dummyMainThread.runOnMainThread(
() ->
mediaSource.addMediaSource(
- /* index */ 0,
- createFakeMediaSource(),
- Util.createHandlerForCurrentOrMainLooper(),
- timelineGrabber));
+ /* index */ 0, createFakeMediaSource(), Util.createHandler(), timelineGrabber));
Timeline timeline = timelineGrabber.assertTimelineChangeBlocking();
assertThat(timeline.getWindowCount()).isEqualTo(1);
} finally {
@@ -585,7 +573,7 @@ public final class ConcatenatingMediaSourceTest {
/* index */ 0,
Arrays.asList(
new MediaSource[] {createFakeMediaSource(), createFakeMediaSource()}),
- Util.createHandlerForCurrentOrMainLooper(),
+ Util.createHandler(),
timelineGrabber));
Timeline timeline = timelineGrabber.assertTimelineChangeBlocking();
assertThat(timeline.getWindowCount()).isEqualTo(2);
@@ -605,8 +593,7 @@ public final class ConcatenatingMediaSourceTest {
final TimelineGrabber timelineGrabber = new TimelineGrabber(testRunner);
dummyMainThread.runOnMainThread(
() ->
- mediaSource.removeMediaSource(
- /* index */ 0, Util.createHandlerForCurrentOrMainLooper(), timelineGrabber));
+ mediaSource.removeMediaSource(/* index */ 0, Util.createHandler(), timelineGrabber));
Timeline timeline = timelineGrabber.assertTimelineChangeBlocking();
assertThat(timeline.getWindowCount()).isEqualTo(0);
} finally {
@@ -630,10 +617,7 @@ public final class ConcatenatingMediaSourceTest {
dummyMainThread.runOnMainThread(
() ->
mediaSource.moveMediaSource(
- /* fromIndex */ 1, /* toIndex */
- 0,
- Util.createHandlerForCurrentOrMainLooper(),
- timelineGrabber));
+ /* fromIndex */ 1, /* toIndex */ 0, Util.createHandler(), timelineGrabber));
Timeline timeline = timelineGrabber.assertTimelineChangeBlocking();
assertThat(timeline.getWindowCount()).isEqualTo(2);
} finally {
@@ -654,7 +638,7 @@ public final class ConcatenatingMediaSourceTest {
mediaSource.moveMediaSource(
/* currentIndex= */ 0,
/* newIndex= */ 1,
- Util.createHandlerForCurrentOrMainLooper(),
+ Util.createHandler(),
callbackCalledCondition::countDown);
mediaSource.releaseSource(caller);
});
@@ -906,8 +890,7 @@ public final class ConcatenatingMediaSourceTest {
testRunner.prepareSource();
final TimelineGrabber timelineGrabber = new TimelineGrabber(testRunner);
- dummyMainThread.runOnMainThread(
- () -> mediaSource.clear(Util.createHandlerForCurrentOrMainLooper(), timelineGrabber));
+ dummyMainThread.runOnMainThread(() -> mediaSource.clear(Util.createHandler(), timelineGrabber));
Timeline timeline = timelineGrabber.assertTimelineChangeBlocking();
assertThat(timeline.isEmpty()).isTrue();
@@ -1059,7 +1042,7 @@ public final class ConcatenatingMediaSourceTest {
() ->
mediaSource.setShuffleOrder(
new ShuffleOrder.UnshuffledShuffleOrder(/* length= */ 0),
- Util.createHandlerForCurrentOrMainLooper(),
+ Util.createHandler(),
runnableInvoked::countDown));
runnableInvoked.await(MediaSourceTestRunner.TIMEOUT_MS, TimeUnit.MILLISECONDS);
dummyMainThread.release();
@@ -1079,7 +1062,7 @@ public final class ConcatenatingMediaSourceTest {
() ->
mediaSource.setShuffleOrder(
new ShuffleOrder.UnshuffledShuffleOrder(/* length= */ 3),
- Util.createHandlerForCurrentOrMainLooper(),
+ Util.createHandler(),
timelineGrabber));
Timeline timeline = timelineGrabber.assertTimelineChangeBlocking();
assertThat(timeline.getFirstWindowIndex(/* shuffleModeEnabled= */ true)).isEqualTo(0);
diff --git a/library/core/src/test/java/com/google/android/exoplayer2/util/MediaSourceEventDispatcherTest.java b/library/core/src/test/java/com/google/android/exoplayer2/util/MediaSourceEventDispatcherTest.java
index debf839a43..8d110a8776 100644
--- a/library/core/src/test/java/com/google/android/exoplayer2/util/MediaSourceEventDispatcherTest.java
+++ b/library/core/src/test/java/com/google/android/exoplayer2/util/MediaSourceEventDispatcherTest.java
@@ -65,9 +65,7 @@ public class MediaSourceEventDispatcherTest {
@Test
public void listenerReceivesEventPopulatedWithMediaPeriodInfo() {
eventDispatcher.addEventListener(
- Util.createHandlerForCurrentOrMainLooper(),
- mediaSourceEventListener,
- MediaSourceEventListener.class);
+ Util.createHandler(), mediaSourceEventListener, MediaSourceEventListener.class);
eventDispatcher.dispatch(
MediaSourceEventListener::onMediaPeriodCreated, MediaSourceEventListener.class);
@@ -78,13 +76,9 @@ public class MediaSourceEventDispatcherTest {
@Test
public void sameListenerObjectRegisteredTwiceOnlyReceivesEventsOnce() {
eventDispatcher.addEventListener(
- Util.createHandlerForCurrentOrMainLooper(),
- mediaSourceEventListener,
- MediaSourceEventListener.class);
+ Util.createHandler(), mediaSourceEventListener, MediaSourceEventListener.class);
eventDispatcher.addEventListener(
- Util.createHandlerForCurrentOrMainLooper(),
- mediaSourceEventListener,
- MediaSourceEventListener.class);
+ Util.createHandler(), mediaSourceEventListener, MediaSourceEventListener.class);
eventDispatcher.dispatch(
MediaSourceEventListener::onMediaPeriodCreated, MediaSourceEventListener.class);
@@ -160,9 +154,7 @@ public class MediaSourceEventDispatcherTest {
@Test
public void listenersAreCopiedToNewDispatcher() {
eventDispatcher.addEventListener(
- Util.createHandlerForCurrentOrMainLooper(),
- mediaSourceEventListener,
- MediaSourceEventListener.class);
+ Util.createHandler(), mediaSourceEventListener, MediaSourceEventListener.class);
MediaSource.MediaPeriodId newPeriodId = new MediaSource.MediaPeriodId("different uid");
MediaSourceEventDispatcher newEventDispatcher =
@@ -178,9 +170,7 @@ public class MediaSourceEventDispatcherTest {
@Test
public void removingListenerStopsEventDispatch() {
eventDispatcher.addEventListener(
- Util.createHandlerForCurrentOrMainLooper(),
- mediaSourceEventListener,
- MediaSourceEventListener.class);
+ Util.createHandler(), mediaSourceEventListener, MediaSourceEventListener.class);
eventDispatcher.removeEventListener(mediaSourceEventListener, MediaSourceEventListener.class);
eventDispatcher.dispatch(
@@ -192,9 +182,7 @@ public class MediaSourceEventDispatcherTest {
@Test
public void removingListenerWithDifferentTypeToRegistrationDoesntRemove() {
eventDispatcher.addEventListener(
- Util.createHandlerForCurrentOrMainLooper(),
- mediaAndDrmEventListener,
- MediaSourceEventListener.class);
+ Util.createHandler(), mediaAndDrmEventListener, MediaSourceEventListener.class);
eventDispatcher.removeEventListener(mediaAndDrmEventListener, DrmSessionEventListener.class);
eventDispatcher.dispatch(
@@ -207,13 +195,9 @@ public class MediaSourceEventDispatcherTest {
public void listenersAreCountedBasedOnListenerAndType() {
// Add the listener twice and remove it once.
eventDispatcher.addEventListener(
- Util.createHandlerForCurrentOrMainLooper(),
- mediaSourceEventListener,
- MediaSourceEventListener.class);
+ Util.createHandler(), mediaSourceEventListener, MediaSourceEventListener.class);
eventDispatcher.addEventListener(
- Util.createHandlerForCurrentOrMainLooper(),
- mediaSourceEventListener,
- MediaSourceEventListener.class);
+ Util.createHandler(), mediaSourceEventListener, MediaSourceEventListener.class);
eventDispatcher.removeEventListener(mediaSourceEventListener, MediaSourceEventListener.class);
eventDispatcher.dispatch(
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 103b689dc2..747a24ca63 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
@@ -680,7 +680,7 @@ public final class DashMediaSource extends BaseMediaSource {
} else {
dataSource = manifestDataSourceFactory.createDataSource();
loader = new Loader("Loader:DashMediaSource");
- handler = Util.createHandlerForCurrentOrMainLooper();
+ handler = Util.createHandler();
startLoadingManifest();
}
}
diff --git a/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/PlayerEmsgHandler.java b/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/PlayerEmsgHandler.java
index fed5ab74f5..7888841e23 100644
--- a/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/PlayerEmsgHandler.java
+++ b/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/PlayerEmsgHandler.java
@@ -105,7 +105,7 @@ public final class PlayerEmsgHandler implements Handler.Callback {
this.allocator = allocator;
manifestPublishTimeToExpiryTimeUs = new TreeMap<>();
- handler = Util.createHandlerForCurrentOrMainLooper(/* callback= */ this);
+ handler = Util.createHandler(/* callback= */ this);
decoder = new EventMessageDecoder();
lastLoadedChunkEndTimeUs = C.TIME_UNSET;
lastLoadedChunkEndTimeBeforeRefreshUs = C.TIME_UNSET;
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 579af21bc4..979b24f939 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
@@ -227,7 +227,7 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull;
@SuppressWarnings("nullness:methodref.receiver.bound.invalid")
Runnable onTracksEndedRunnable = this::onTracksEnded;
this.onTracksEndedRunnable = onTracksEndedRunnable;
- handler = Util.createHandlerForCurrentOrMainLooper();
+ 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 2806a0bdd4..d43284a211 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
@@ -121,7 +121,7 @@ public final class DefaultHlsPlaylistTracker
Uri initialPlaylistUri,
EventDispatcher eventDispatcher,
PrimaryPlaylistListener primaryPlaylistListener) {
- this.playlistRefreshHandler = Util.createHandlerForCurrentOrMainLooper();
+ 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 9f63a54650..6b9a00b486 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
@@ -620,7 +620,7 @@ public final class SsMediaSource extends BaseMediaSource
manifestDataSource = manifestDataSourceFactory.createDataSource();
manifestLoader = new Loader("Loader:Manifest");
manifestLoaderErrorThrower = manifestLoader;
- manifestRefreshHandler = Util.createHandlerForCurrentOrMainLooper();
+ 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 5b8d501d00..8fe58aa45b 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
@@ -602,7 +602,7 @@ public abstract class Action {
} else {
message.setPosition(positionMs);
}
- message.setHandler(Util.createHandlerForCurrentOrMainLooper());
+ message.setHandler(Util.createHandler());
message.setDeleteAfterDelivery(deleteAfterDelivery);
message.send();
}
@@ -684,7 +684,7 @@ public abstract class Action {
@Nullable Surface surface,
HandlerWrapper handler,
@Nullable ActionNode nextAction) {
- Handler testThreadHandler = Util.createHandlerForCurrentOrMainLooper();
+ Handler testThreadHandler = Util.createHandler();
// Schedule a message on the playback thread to ensure the player is paused immediately.
player
.createMessage(
@@ -1048,7 +1048,7 @@ public abstract class Action {
player
.createMessage(
(type, data) -> nextAction.schedule(player, trackSelector, surface, handler))
- .setHandler(Util.createHandlerForCurrentOrMainLooper())
+ .setHandler(Util.createHandler())
.send();
}
diff --git a/testutils/src/main/java/com/google/android/exoplayer2/testutil/ExoHostedTest.java b/testutils/src/main/java/com/google/android/exoplayer2/testutil/ExoHostedTest.java
index d8dabf05b0..ea3c74f26f 100644
--- a/testutils/src/main/java/com/google/android/exoplayer2/testutil/ExoHostedTest.java
+++ b/testutils/src/main/java/com/google/android/exoplayer2/testutil/ExoHostedTest.java
@@ -137,8 +137,7 @@ public abstract class ExoHostedTest implements AnalyticsListener, HostedTest {
player.addAnalyticsListener(this);
player.addAnalyticsListener(new EventLogger(trackSelector, tag));
// Schedule any pending actions.
- actionHandler =
- Clock.DEFAULT.createHandler(Util.getCurrentOrMainLooper(), /* callback= */ null);
+ actionHandler = Clock.DEFAULT.createHandler(Util.getLooper(), /* callback= */ null);
if (pendingSchedule != null) {
pendingSchedule.start(player, trackSelector, surface, actionHandler, /* callback= */ null);
pendingSchedule = null;
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 4e3d15b43f..35fd2d7f0e 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
@@ -162,7 +162,7 @@ public class FakeMediaPeriod implements MediaPeriod {
/* mediaEndTimeUs = */ C.TIME_UNSET);
prepareCallback = callback;
if (deferOnPrepared) {
- playerHandler = Util.createHandlerForCurrentOrMainLooper();
+ 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 ded1da49b9..2c5a471c58 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
@@ -176,7 +176,7 @@ public class FakeMediaSource extends BaseMediaSource {
drmSessionManager.prepare();
preparedSource = true;
releasedSource = false;
- sourceInfoRefreshHandler = Util.createHandlerForCurrentOrMainLooper();
+ sourceInfoRefreshHandler = Util.createHandler();
if (timeline != null) {
finishSourcePreparation(/* sendManifestLoadEvents= */ true);
}
diff --git a/testutils/src/main/java/com/google/android/exoplayer2/testutil/TestExoPlayer.java b/testutils/src/main/java/com/google/android/exoplayer2/testutil/TestExoPlayer.java
index 548c0a0ccf..139088aeb6 100644
--- a/testutils/src/main/java/com/google/android/exoplayer2/testutil/TestExoPlayer.java
+++ b/testutils/src/main/java/com/google/android/exoplayer2/testutil/TestExoPlayer.java
@@ -490,7 +490,7 @@ public class TestExoPlayer {
AtomicBoolean receivedMessageCallback = new AtomicBoolean(false);
player
.createMessage((type, data) -> receivedMessageCallback.set(true))
- .setHandler(Util.createHandlerForCurrentOrMainLooper())
+ .setHandler(Util.createHandler())
.send();
runMainLooperUntil(receivedMessageCallback::get);
}