diff --git a/demos/session/src/main/java/androidx/media3/demo/session/PlayableFolderActivity.kt b/demos/session/src/main/java/androidx/media3/demo/session/PlayableFolderActivity.kt index f9c6873e804..e4a048ae91c 100644 --- a/demos/session/src/main/java/androidx/media3/demo/session/PlayableFolderActivity.kt +++ b/demos/session/src/main/java/androidx/media3/demo/session/PlayableFolderActivity.kt @@ -43,7 +43,7 @@ import com.google.common.util.concurrent.ListenableFuture class PlayableFolderActivity : AppCompatActivity() { private lateinit var browserFuture: ListenableFuture private val browser: MediaBrowser? - get() = if (browserFuture.isDone) browserFuture.get() else null + get() = if (browserFuture.isDone && !browserFuture.isCancelled) browserFuture.get() else null private lateinit var mediaList: ListView private lateinit var mediaListAdapter: PlayableMediaItemArrayAdapter diff --git a/demos/session/src/main/java/androidx/media3/demo/session/PlayerActivity.kt b/demos/session/src/main/java/androidx/media3/demo/session/PlayerActivity.kt index af1f15c7d8f..a87e177b587 100644 --- a/demos/session/src/main/java/androidx/media3/demo/session/PlayerActivity.kt +++ b/demos/session/src/main/java/androidx/media3/demo/session/PlayerActivity.kt @@ -45,7 +45,8 @@ import com.google.common.util.concurrent.MoreExecutors class PlayerActivity : AppCompatActivity() { private lateinit var controllerFuture: ListenableFuture private val controller: MediaController? - get() = if (controllerFuture.isDone) controllerFuture.get() else null + get() = + if (controllerFuture.isDone && !controllerFuture.isCancelled) controllerFuture.get() else null private lateinit var playerView: PlayerView private lateinit var mediaItemListView: ListView diff --git a/libraries/session/src/main/java/androidx/media3/session/DefaultMediaNotificationProvider.java b/libraries/session/src/main/java/androidx/media3/session/DefaultMediaNotificationProvider.java index a11aa3d8217..e9d77e75f7c 100644 --- a/libraries/session/src/main/java/androidx/media3/session/DefaultMediaNotificationProvider.java +++ b/libraries/session/src/main/java/androidx/media3/session/DefaultMediaNotificationProvider.java @@ -53,6 +53,7 @@ import com.google.errorprone.annotations.CanIgnoreReturnValue; import java.util.Arrays; import java.util.List; +import java.util.concurrent.CancellationException; import java.util.concurrent.ExecutionException; import org.checkerframework.checker.nullness.qual.MonotonicNonNull; @@ -348,7 +349,7 @@ public final MediaNotification createNotification( if (bitmapFuture.isDone()) { try { builder.setLargeIcon(Futures.getDone(bitmapFuture)); - } catch (ExecutionException e) { + } catch (CancellationException | ExecutionException e) { Log.w(TAG, getBitmapLoadErrorMessage(e)); } } else { diff --git a/libraries/session/src/main/java/androidx/media3/session/MediaNotificationManager.java b/libraries/session/src/main/java/androidx/media3/session/MediaNotificationManager.java index b6c3d562802..82e497c5379 100644 --- a/libraries/session/src/main/java/androidx/media3/session/MediaNotificationManager.java +++ b/libraries/session/src/main/java/androidx/media3/session/MediaNotificationManager.java @@ -214,7 +214,7 @@ public void updateNotification(MediaSession session, boolean startInForegroundRe if (controllerAndListener != null && controllerAndListener.controller.isDone()) { try { mediaNotificationController = Futures.getDone(controllerAndListener.controller); - } catch (ExecutionException e) { + } catch (CancellationException | ExecutionException e) { // Ignore. } } @@ -323,7 +323,7 @@ private MediaController getConnectedControllerForSession(MediaSession session) { } try { return Futures.getDone(controllerAndListener.controller); - } catch (ExecutionException exception) { + } catch (CancellationException | ExecutionException exception) { // We should never reach this. throw new IllegalStateException(exception); } diff --git a/libraries/session/src/main/java/androidx/media3/session/MediaSessionLegacyStub.java b/libraries/session/src/main/java/androidx/media3/session/MediaSessionLegacyStub.java index 7d5e4d76b23..26875d9e1a4 100644 --- a/libraries/session/src/main/java/androidx/media3/session/MediaSessionLegacyStub.java +++ b/libraries/session/src/main/java/androidx/media3/session/MediaSessionLegacyStub.java @@ -1375,7 +1375,7 @@ private void updateMetadataIfChanged() { if (bitmapFuture.isDone()) { try { artworkBitmap = Futures.getDone(bitmapFuture); - } catch (ExecutionException e) { + } catch (CancellationException | ExecutionException e) { Log.w(TAG, getBitmapLoadErrorMessage(e)); } } else {