From 9319be2d5aea64eeb2de85e234d988edb99df767 Mon Sep 17 00:00:00 2001 From: Nite Date: Wed, 4 Jan 2023 14:33:19 +0100 Subject: [PATCH] Fixed restarting after player service stop --- .../org/moire/ultrasonic/playback/PlaybackService.kt | 2 ++ .../moire/ultrasonic/service/MediaPlayerController.kt | 11 ++++------- .../ultrasonic/service/MediaPlayerLifecycleSupport.kt | 4 ++++ 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/playback/PlaybackService.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/playback/PlaybackService.kt index 1635b18f..2bbf404a 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/playback/PlaybackService.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/playback/PlaybackService.kt @@ -85,12 +85,14 @@ class PlaybackService : override fun onTaskRemoved(rootIntent: Intent?) { Timber.i("Stopping the playback because we were swiped away") releasePlayerAndSession() + super.onTaskRemoved(rootIntent) } private fun releasePlayerAndSession() { // Broadcast that the service is being shutdown RxBus.stopServiceCommandPublisher.onNext(Unit) + // TODO Save the player state before shutdown player.removeListener(listener) player.release() mediaLibrarySession.release() diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/MediaPlayerController.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/MediaPlayerController.kt index 29208e5b..01221c08 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/MediaPlayerController.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/MediaPlayerController.kt @@ -198,13 +198,10 @@ class MediaPlayerController( } rxBusSubscription += RxBus.shutdownCommandObservable.subscribe { - playbackStateSerializer.serializeNow( - playlist.map { it.toTrack() }, - currentMediaItemIndex, - playerPosition, - isShufflePlayEnabled, - repeatMode - ) + clear(false) + onDestroy() + } + rxBusSubscription += RxBus.stopServiceCommandObservable.subscribe { clear(false) onDestroy() } diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/MediaPlayerLifecycleSupport.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/MediaPlayerLifecycleSupport.kt index 0c330816..d412d0e6 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/MediaPlayerLifecycleSupport.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/MediaPlayerLifecycleSupport.kt @@ -47,6 +47,9 @@ class MediaPlayerLifecycleSupport : KoinComponent { rxBusSubscription += RxBus.shutdownCommandObservable.subscribe { onDestroy() } + rxBusSubscription += RxBus.stopServiceCommandObservable.subscribe { + onDestroy() + } } fun onCreate() { @@ -89,6 +92,7 @@ class MediaPlayerLifecycleSupport : KoinComponent { private fun onDestroy() { if (!created) return + rxBusSubscription.dispose() applicationContext().unregisterReceiver(headsetEventReceiver)