diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/voice/VoiceNoteMediaController.java b/app/src/main/java/org/thoughtcrime/securesms/components/voice/VoiceNoteMediaController.java index 516f9c5d3..fdae10daf 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/voice/VoiceNoteMediaController.java +++ b/app/src/main/java/org/thoughtcrime/securesms/components/voice/VoiceNoteMediaController.java @@ -124,6 +124,12 @@ public class VoiceNoteMediaController implements DefaultLifecycleObserver { @Override public void onDestroy(@NonNull LifecycleOwner owner) { + if (voiceNoteProximityWakeLockManager != null) { + voiceNoteProximityWakeLockManager.unregisterCallbacksAndRelease(); + voiceNoteProximityWakeLockManager.unregisterFromLifecycle(); + voiceNoteProximityWakeLockManager = null; + } + activity.getLifecycle().removeObserver(this); activity = null; } @@ -294,6 +300,7 @@ public class VoiceNoteMediaController implements DefaultLifecycleObserver { if (voiceNoteProximityWakeLockManager != null) { Log.d(TAG, "Session reconnected, cleaning up old wake lock manager"); voiceNoteProximityWakeLockManager.unregisterCallbacksAndRelease(); + voiceNoteProximityWakeLockManager.unregisterFromLifecycle(); voiceNoteProximityWakeLockManager = null; } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/voice/VoiceNoteProximityWakeLockManager.kt b/app/src/main/java/org/thoughtcrime/securesms/components/voice/VoiceNoteProximityWakeLockManager.kt index 0de3e7f08..21aad4df9 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/voice/VoiceNoteProximityWakeLockManager.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/voice/VoiceNoteProximityWakeLockManager.kt @@ -66,6 +66,12 @@ class VoiceNoteProximityWakeLockManager( cleanUpWakeLock() } + fun unregisterFromLifecycle() { + if (proximitySensor != null) { + activity.lifecycle.removeObserver(this) + } + } + private fun isActivityResumed() = activity.lifecycle.currentState.isAtLeast(Lifecycle.State.RESUMED) private fun isPlayerActive() = mediaController.playbackState.state == PlaybackStateCompat.STATE_BUFFERING ||