From 6a5ac19140253e7e78ea65745914b0746e527058 Mon Sep 17 00:00:00 2001 From: bachinger Date: Thu, 1 Dec 2022 15:39:28 +0000 Subject: [PATCH] Stop service when app is terminated while the player is paused If the service ever has been started but is not in the foreground, the service would be terminated without calling onDestroy(). This is because when onStartCommand returns START_STICKY [1], the app takes the responsibility to stop the service. Note that this change interrupts the user journey when paused, because the notification is removed. Apps can implement playback resumption [2] to give the user an option to resume playback after the service has been terminated. [1] https://developer.android.com/reference/android/app/Service#START_STICKY [2] https://developer.android.com/guide/topics/media/media-controls#supporting_playback_resumption Issue: androidx/media#175 #minor-release PiperOrigin-RevId: 492192690 --- .../java/androidx/media3/demo/session/PlaybackService.kt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/demos/session/src/main/java/androidx/media3/demo/session/PlaybackService.kt b/demos/session/src/main/java/androidx/media3/demo/session/PlaybackService.kt index cc8291c27d..16ca1a25a5 100644 --- a/demos/session/src/main/java/androidx/media3/demo/session/PlaybackService.kt +++ b/demos/session/src/main/java/androidx/media3/demo/session/PlaybackService.kt @@ -72,6 +72,12 @@ class PlaybackService : MediaLibraryService() { return mediaLibrarySession } + override fun onTaskRemoved(rootIntent: Intent?) { + if (!player.playWhenReady) { + stopSelf() + } + } + override fun onDestroy() { player.release() mediaLibrarySession.release()