Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cd095158 authored by Louis Chang's avatar Louis Chang Committed by Android (Google) Code Review
Browse files

Merge "Prevent IndexOutOfBoundsException while removing activities"

parents c00b13db 26a92f5d
Loading
Loading
Loading
Loading
+12 −5
Original line number Diff line number Diff line
@@ -1591,15 +1591,22 @@ class Task extends TaskFragment {
                removeChild(r, reason);
            });
        } else {
            final ArrayList<ActivityRecord> finishingActivities = new ArrayList<>();
            forAllActivities(r -> {
                if (r.finishing || (excludingTaskOverlay && r.isTaskOverlay())) {
                    return;
                }
                finishingActivities.add(r);
            });

            // Finish or destroy apps from the bottom to ensure that all the other activity have
            // been finished and the top task in another task gets resumed when a top activity is
            // removed. Otherwise, the next top activity could be started while the top activity
            // is removed, which is not necessary since the next top activity is on the same Task
            // and should also be removed.
            forAllActivities((r) -> {
                if (r.finishing || (excludingTaskOverlay && r.isTaskOverlay())) {
                    return;
                }
            for (int i = finishingActivities.size() - 1; i >= 0; 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.
@@ -1609,7 +1616,7 @@ class Task extends TaskFragment {
                } else {
                    r.destroyIfPossible(reason);
                }
            }, false /* traverseTopToBottom */);
            }
        }
    }