From 87c160610fbea166974cc7d0f4b37cd6296b6e75 Mon Sep 17 00:00:00 2001 From: tzugen Date: Wed, 8 Jun 2022 09:17:14 +0200 Subject: [PATCH] Clear widget when service is being shutdown --- .../org/moire/ultrasonic/activity/NavigationActivity.kt | 1 - .../kotlin/org/moire/ultrasonic/playback/PlaybackService.kt | 3 +++ .../ultrasonic/provider/UltrasonicAppWidgetProvider.kt | 1 + .../org/moire/ultrasonic/service/MediaPlayerController.kt | 5 +++++ .../src/main/kotlin/org/moire/ultrasonic/service/RxBus.kt | 6 ++++++ 5 files changed, 15 insertions(+), 1 deletion(-) diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/activity/NavigationActivity.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/activity/NavigationActivity.kt index d0499aa5..2fefadc3 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/activity/NavigationActivity.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/activity/NavigationActivity.kt @@ -102,7 +102,6 @@ class NavigationActivity : AppCompatActivity() { Timber.d("onCreate called") // First check if Koin has been started - if (UApp.instance != null && !UApp.instance!!.initiated) { Timber.d("Starting Koin") UApp.instance!!.startKoin() 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 23adf816..8404d0f9 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/playback/PlaybackService.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/playback/PlaybackService.kt @@ -87,6 +87,9 @@ class PlaybackService : MediaLibraryService(), KoinComponent { } private fun releasePlayerAndSession() { + // Broadcast that the service is being shutdown + RxBus.stopCommandPublisher.onNext(Unit) + player.release() mediaLibrarySession.release() rxBusSubscription.dispose() diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/provider/UltrasonicAppWidgetProvider.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/provider/UltrasonicAppWidgetProvider.kt index ddc11e3f..e74fbbae 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/provider/UltrasonicAppWidgetProvider.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/provider/UltrasonicAppWidgetProvider.kt @@ -97,6 +97,7 @@ open class UltrasonicAppWidgetProvider : AppWidgetProvider() { playing: Boolean, setAlbum: Boolean ) { + Timber.d("Updating Widget") val res = context.resources val views = RemoteViews(context.packageName, layoutId) val title = currentSong?.title 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 45a070ed..749e30e0 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/MediaPlayerController.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/MediaPlayerController.kt @@ -166,6 +166,11 @@ class MediaPlayerController( } } + rxBusSubscription += RxBus.stopCommandObservable.subscribe { + // Clear the widget when we stop the service + updateWidget(null) + } + created = true Timber.i("MediaPlayerController started") } diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/RxBus.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/RxBus.kt index 4bfdcdab..e472637a 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/RxBus.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/RxBus.kt @@ -63,6 +63,12 @@ class RxBus { PublishSubject.create() val shutdownCommandObservable: Observable = shutdownCommandPublisher.observeOn(mainThread()) + + val stopCommandPublisher: PublishSubject = + PublishSubject.create() + val stopCommandObservable: Observable = + stopCommandPublisher.observeOn(mainThread()) + } data class StateWithTrack(