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)