fix(): Fixed memory leak when use MusicService in fold-out window

This commit is contained in:
yonta 2022-09-04 11:54:29 +00:00
parent 2b64c7ea3d
commit 14a0a6d1c9

View file

@ -277,6 +277,7 @@ class MusicService : MediaBrowserServiceCompat(),
private var wakeLock: WakeLock? = null private var wakeLock: WakeLock? = null
private var notificationManager: NotificationManager? = null private var notificationManager: NotificationManager? = null
private var isForeground = false private var isForeground = false
private var audioVolumeObserver: AudioVolumeObserver? = null
override fun onCreate() { override fun onCreate() {
super.onCreate() super.onCreate()
val telephonyManager = getSystemService<TelephonyManager>() val telephonyManager = getSystemService<TelephonyManager>()
@ -354,8 +355,8 @@ class MusicService : MediaBrowserServiceCompat(),
.registerContentObserver( .registerContentObserver(
MediaStore.Audio.Playlists.INTERNAL_CONTENT_URI, true, mediaStoreObserver MediaStore.Audio.Playlists.INTERNAL_CONTENT_URI, true, mediaStoreObserver
) )
val audioVolumeObserver = AudioVolumeObserver(this) // val audioVolumeObserver = AudioVolumeObserver(this)
audioVolumeObserver.register(AudioManager.STREAM_MUSIC, this) audioVolumeObserver?.register(AudioManager.STREAM_MUSIC, this)
registerOnSharedPreferenceChangedListener(this) registerOnSharedPreferenceChangedListener(this)
restoreState() restoreState()
sendBroadcast(Intent("code.name.monkey.retromusic.RETRO_MUSIC_SERVICE_CREATED")) sendBroadcast(Intent("code.name.monkey.retromusic.RETRO_MUSIC_SERVICE_CREATED"))
@ -386,6 +387,9 @@ class MusicService : MediaBrowserServiceCompat(),
releaseResources() releaseResources()
contentResolver.unregisterContentObserver(mediaStoreObserver) contentResolver.unregisterContentObserver(mediaStoreObserver)
unregisterOnSharedPreferenceChangedListener(this) unregisterOnSharedPreferenceChangedListener(this)
// add unregister audioVolumeObserver method to avoid memory leak
// val audioVolumeObserver = AudioVolumeObserver(this)
audioVolumeObserver?.unregister()
wakeLock?.release() wakeLock?.release()
sendBroadcast(Intent("code.name.monkey.retromusic.RETRO_MUSIC_SERVICE_DESTROYED")) sendBroadcast(Intent("code.name.monkey.retromusic.RETRO_MUSIC_SERVICE_DESTROYED"))
} }