diff --git a/libraries/test_session_current/src/androidTest/java/androidx/media3/session/MediaControllerWithMediaSessionCompatTest.java b/libraries/test_session_current/src/androidTest/java/androidx/media3/session/MediaControllerWithMediaSessionCompatTest.java index 1ea60474e6..d5109f05af 100644 --- a/libraries/test_session_current/src/androidTest/java/androidx/media3/session/MediaControllerWithMediaSessionCompatTest.java +++ b/libraries/test_session_current/src/androidTest/java/androidx/media3/session/MediaControllerWithMediaSessionCompatTest.java @@ -168,6 +168,7 @@ public class MediaControllerWithMediaSessionCompatTest { @Test public void disconnected_byControllerReleaseRightAfterCreated() throws Exception { CountDownLatch latch = new CountDownLatch(1); + AtomicReference exception = new AtomicReference<>(); MediaController controller = controllerTestRule.createController( session.getSessionToken(), @@ -177,8 +178,16 @@ public class MediaControllerWithMediaSessionCompatTest { latch.countDown(); } }, - /* controllerCreationListener= */ MediaController::release); + /* controllerCreationListener= */ mediaController -> { + // We must release the controller on the app thread. + try { + threadTestRule.getHandler().postAndSync(() -> mediaController.release()); + } catch (Exception e) { + exception.set(e); + } + }); assertThat(latch.await(TIMEOUT_MS, MILLISECONDS)).isTrue(); + assertThat(exception.get()).isNull(); assertThat(controller.isConnected()).isFalse(); }