diff --git a/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayerImpl.java b/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayerImpl.java index d551e8d6d8..5788d045e2 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayerImpl.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayerImpl.java @@ -75,6 +75,8 @@ import java.util.concurrent.TimeoutException; private final List mediaSourceHolderSnapshots; private final boolean useLazyPreparation; private final MediaSourceFactory mediaSourceFactory; + @Nullable private final AnalyticsCollector analyticsCollector; + private final BandwidthMeter bandwidthMeter; @RepeatMode private int repeatMode; private boolean shuffleModeEnabled; @@ -135,6 +137,8 @@ import java.util.concurrent.TimeoutException; this.renderers = checkNotNull(renderers); this.trackSelector = checkNotNull(trackSelector); this.mediaSourceFactory = mediaSourceFactory; + this.bandwidthMeter = bandwidthMeter; + this.analyticsCollector = analyticsCollector; this.useLazyPreparation = useLazyPreparation; this.seekParameters = seekParameters; this.pauseAtEndOfMediaItems = pauseAtEndOfMediaItems; @@ -161,6 +165,8 @@ import java.util.concurrent.TimeoutException; pendingListenerNotifications = new ArrayDeque<>(); if (analyticsCollector != null) { analyticsCollector.setPlayer(this); + addListener(analyticsCollector); + bandwidthMeter.addEventListener(applicationHandler, analyticsCollector); } internalPlayer = new ExoPlayerImplInternal( @@ -712,6 +718,9 @@ import java.util.concurrent.TimeoutException; new RuntimeException(new TimeoutException("Player release timed out."))))); } applicationHandler.removeCallbacksAndMessages(null); + if (analyticsCollector != null) { + bandwidthMeter.removeEventListener(analyticsCollector); + } playbackInfo = getResetPlaybackInfo( /* clearPlaylist= */ false, 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 a2196c7201..d67588285e 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 @@ -601,15 +601,12 @@ public class SimpleExoPlayer extends BasePlayer builder.pauseAtEndOfMediaItems, builder.clock, builder.looper); - analyticsCollector.setPlayer(player); - player.addListener(analyticsCollector); player.addListener(componentListener); videoDebugListeners.add(analyticsCollector); videoListeners.add(analyticsCollector); audioDebugListeners.add(analyticsCollector); audioListeners.add(analyticsCollector); addMetadataOutput(analyticsCollector); - bandwidthMeter.addEventListener(eventHandler, analyticsCollector); audioBecomingNoisyManager = new AudioBecomingNoisyManager(builder.context, eventHandler, componentListener); @@ -1699,7 +1696,6 @@ public class SimpleExoPlayer extends BasePlayer Assertions.checkNotNull(priorityTaskManager).remove(C.PRIORITY_PLAYBACK); isPriorityTaskManagerRegistered = false; } - bandwidthMeter.removeEventListener(analyticsCollector); currentCues = Collections.emptyList(); playerReleased = true; }