diff options
| -rw-r--r-- | services/core/java/com/android/server/wm/Task.java | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java index 51eec03855a5..c0c675e334fa 100644 --- a/services/core/java/com/android/server/wm/Task.java +++ b/services/core/java/com/android/server/wm/Task.java @@ -1612,10 +1612,18 @@ class Task extends TaskFragment { // removed. Otherwise, shell transitions wouldn't run because there would be no event // that sets the transition ready. final boolean traverseTopToBottom = !mTransitionController.isShellTransitionsEnabled(); - forAllActivities((r) -> { + final ArrayList<ActivityRecord> finishingActivities = new ArrayList<>(); + forAllActivities(r -> { if (r.finishing || (excludingTaskOverlay && r.isTaskOverlay())) { return; } + finishingActivities.add(r); + }, traverseTopToBottom); + + + for (int i = 0; i < finishingActivities.size(); i++) { + final ActivityRecord r = finishingActivities.get(i); + // Prevent the transition from being executed too early if the top activity is // resumed but the mVisibleRequested of any other activity is true, the transition // should wait until next activity resumed. @@ -1625,7 +1633,7 @@ class Task extends TaskFragment { } else { r.destroyIfPossible(reason); } - }, traverseTopToBottom); + } } } |