From 14a0a6d1c9c8afd52d13c6fb53a1608c32bfce07 Mon Sep 17 00:00:00 2001 From: yonta <913325816@qq.com> Date: Sun, 4 Sep 2022 11:54:29 +0000 Subject: [PATCH] fix(): Fixed memory leak when use MusicService in fold-out window --- .../io/github/muntashirakon/music/service/MusicService.kt | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/io/github/muntashirakon/music/service/MusicService.kt b/app/src/main/java/io/github/muntashirakon/music/service/MusicService.kt index f8e782ab3..74322b09f 100644 --- a/app/src/main/java/io/github/muntashirakon/music/service/MusicService.kt +++ b/app/src/main/java/io/github/muntashirakon/music/service/MusicService.kt @@ -277,6 +277,7 @@ class MusicService : MediaBrowserServiceCompat(), private var wakeLock: WakeLock? = null private var notificationManager: NotificationManager? = null private var isForeground = false + private var audioVolumeObserver: AudioVolumeObserver? = null override fun onCreate() { super.onCreate() val telephonyManager = getSystemService() @@ -354,8 +355,8 @@ class MusicService : MediaBrowserServiceCompat(), .registerContentObserver( MediaStore.Audio.Playlists.INTERNAL_CONTENT_URI, true, mediaStoreObserver ) - val audioVolumeObserver = AudioVolumeObserver(this) - audioVolumeObserver.register(AudioManager.STREAM_MUSIC, this) +// val audioVolumeObserver = AudioVolumeObserver(this) + audioVolumeObserver?.register(AudioManager.STREAM_MUSIC, this) registerOnSharedPreferenceChangedListener(this) restoreState() sendBroadcast(Intent("code.name.monkey.retromusic.RETRO_MUSIC_SERVICE_CREATED")) @@ -386,6 +387,9 @@ class MusicService : MediaBrowserServiceCompat(), releaseResources() contentResolver.unregisterContentObserver(mediaStoreObserver) unregisterOnSharedPreferenceChangedListener(this) + // add unregister audioVolumeObserver method to avoid memory leak +// val audioVolumeObserver = AudioVolumeObserver(this) + audioVolumeObserver?.unregister() wakeLock?.release() sendBroadcast(Intent("code.name.monkey.retromusic.RETRO_MUSIC_SERVICE_DESTROYED")) }