From e02c8b9db77b26c722d4642843c3e62c89a12adc Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Mon, 1 Nov 2021 11:56:00 -0300 Subject: [PATCH] Fix lifecycle of VoiceNoteProximityWakeLockManager. --- .../components/voice/VoiceNoteMediaController.java | 7 +++++++ .../components/voice/VoiceNoteProximityWakeLockManager.kt | 6 ++++++ 2 files changed, 13 insertions(+) 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 516f9c5d38..fdae10dafc 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 0de3e7f08f..21aad4df9a 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 ||