diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java index 5970f622955ec..f727ff9b30be9 100644 --- a/services/core/java/com/android/server/wm/ActivityRecord.java +++ b/services/core/java/com/android/server/wm/ActivityRecord.java @@ -3453,7 +3453,13 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A if (stopped) { abortAndClearOptionsAnimation(); } - mAtmService.getTransitionController().requestTransitionIfNeeded(TRANSIT_CLOSE, this); + if (mAtmService.getTransitionController().isCollecting()) { + // We don't want the finishing to change the transition ready state since there will not + // be corresponding setReady for finishing. + mAtmService.getTransitionController().collectExistenceChange(this); + } else { + mAtmService.getTransitionController().requestTransitionIfNeeded(TRANSIT_CLOSE, this); + } } /** diff --git a/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java b/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java index f728a481dd521..cb9c0372c3ad2 100644 --- a/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java +++ b/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java @@ -1551,7 +1551,13 @@ public class ActivityTaskSupervisor implements RecentTasks.Callbacks { return; } if (task.isVisible()) { - mService.getTransitionController().requestTransitionIfNeeded(TRANSIT_CLOSE, task); + if (mService.getTransitionController().isCollecting()) { + // We don't want the finishing to change the transition ready state since there will + // not be corresponding setReady for finishing. + mService.getTransitionController().collectExistenceChange(task); + } else { + mService.getTransitionController().requestTransitionIfNeeded(TRANSIT_CLOSE, task); + } } else { // Removing a non-visible task doesn't require a transition, but if there is one // collecting, this should be a member just in case.