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

Commit 2f821c90 authored by Louis Chang's avatar Louis Chang
Browse files

Prevent IndexOutOfBoundsException while removing activities

IndexOutOfBoundsException was thrown when traversing the Task
from bottom to top because the activity could be removed from
the Task and the activities are less than its original size.

Bug: 249658397
Bug: 260643770
Test: 1) Start multiple activities in a Task
      2) Swipe up to home
      3) Kill the app process from shell
      4) Remove the task from Recents
Change-Id: I64955415c04da30d7dc8a4681474ceb06db1e88b
Merged-In: I64955415c04da30d7dc8a4681474ceb06db1e88b
parent 4d3d9d5e
Loading
Loading
Loading
Loading
+10 −2
Original line number Diff line number Diff line
@@ -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);
            }
        }
    }