From e0253714291feeeffdbcf760d09f30114ae74690 Mon Sep 17 00:00:00 2001 From: samrobinson Date: Mon, 28 Oct 2019 10:18:49 +0000 Subject: [PATCH] Fix memory leak and calling listener when disabled in AudioBecomingNoisyManager. PiperOrigin-RevId: 277030401 --- .../android/exoplayer2/AudioBecomingNoisyManager.java | 11 +++++++++-- .../google/android/exoplayer2/SimpleExoPlayer.java | 1 + 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/library/core/src/main/java/com/google/android/exoplayer2/AudioBecomingNoisyManager.java b/library/core/src/main/java/com/google/android/exoplayer2/AudioBecomingNoisyManager.java index 7da175b4ef..2a52a039d6 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/AudioBecomingNoisyManager.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/AudioBecomingNoisyManager.java @@ -55,7 +55,7 @@ import android.os.Handler; } } - private static final class AudioBecomingNoisyReceiver extends BroadcastReceiver { + private final class AudioBecomingNoisyReceiver extends BroadcastReceiver implements Runnable { private final EventListener listener; private final Handler eventHandler; @@ -67,7 +67,14 @@ import android.os.Handler; @Override public void onReceive(Context context, Intent intent) { if (AudioManager.ACTION_AUDIO_BECOMING_NOISY.equals(intent.getAction())) { - eventHandler.post(listener::onAudioBecomingNoisy); + eventHandler.post(this); + } + } + + @Override + public void run() { + if (receiverRegistered) { + listener.onAudioBecomingNoisy(); } } } 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 7af72048dd..b77e8a4150 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 @@ -1265,6 +1265,7 @@ public class SimpleExoPlayer extends BasePlayer @Override public void release() { verifyApplicationThread(); + audioBecomingNoisyManager.setEnabled(false); audioFocusManager.handleStop(); wakeLockManager.setStayAwake(false); player.release();