diff options
| -rw-r--r-- | services/core/java/com/android/server/wm/ActivityRecord.java | 4 | ||||
| -rw-r--r-- | services/tests/wmtests/src/com/android/server/wm/RootTaskTests.java | 6 |
2 files changed, 10 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java index d38cd885529a..78a6816593ae 100644 --- a/services/core/java/com/android/server/wm/ActivityRecord.java +++ b/services/core/java/com/android/server/wm/ActivityRecord.java @@ -4033,6 +4033,10 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A if (next == null) { mRootWindowContainer.ensureVisibilityAndConfig(null /* starting */, mDisplayContent, true /* deferResume */); + if (mDisplayContent.topRunningActivity() == null) { + // The transition is ready on a display with no running activities. + mTransitionController.setReady(mDisplayContent); + } } if (activityRemoved) { mRootWindowContainer.resumeFocusedTasksTopActivities(); diff --git a/services/tests/wmtests/src/com/android/server/wm/RootTaskTests.java b/services/tests/wmtests/src/com/android/server/wm/RootTaskTests.java index 0f28528c9327..e019a416c069 100644 --- a/services/tests/wmtests/src/com/android/server/wm/RootTaskTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/RootTaskTests.java @@ -1235,12 +1235,18 @@ public class RootTaskTests extends WindowTestsBase { assertEquals(STOPPING, activity2.getState()); assertThat(mSupervisor.mStoppingActivities).contains(activity2); + registerTestTransitionPlayer(); + final Transition transition = display.mTransitionController + .requestCloseTransitionIfNeeded(rootTask1); + transition.collectClose(rootTask1); // The display becomes empty. Since there is no next activity to be idle, the activity // should be destroyed immediately with updating configuration to restore original state. final ActivityRecord activity1 = finishTopActivity(rootTask1); assertEquals(DESTROYING, activity1.getState()); verify(mRootWindowContainer).ensureVisibilityAndConfig(eq(null) /* starting */, eq(display), anyBoolean()); + assertTrue("Transition must be ready if there is no next running activity", + transition.allReady()); } private ActivityRecord finishTopActivity(Task task) { |