diff options
| -rw-r--r-- | services/java/com/android/server/am/ActivityStack.java | 23 | ||||
| -rw-r--r-- | services/java/com/android/server/am/ActivityStackSupervisor.java | 2 |
2 files changed, 12 insertions, 13 deletions
diff --git a/services/java/com/android/server/am/ActivityStack.java b/services/java/com/android/server/am/ActivityStack.java index 4d669461d35d..dd2f4c4d4e63 100644 --- a/services/java/com/android/server/am/ActivityStack.java +++ b/services/java/com/android/server/am/ActivityStack.java @@ -3438,23 +3438,22 @@ final class ActivityStack { // Determine if the top task is exiting and should return to home. Do this before it gets // removed in removeHistoryRecordsForAppsLocked. boolean launchHomeNext = false; - int top = mTaskHistory.size() - 1; - while (top >= 0) { - final TaskRecord topTask = mTaskHistory.get(top); - if (topTask.mActivities.isEmpty()) { - // Not possible, but just in case. - --top; + TaskRecord topTask = mTaskHistory.get(mTaskHistory.size() - 1); + ArrayList<ActivityRecord> activities = topTask.mActivities; + int activityNdx; + for (activityNdx = activities.size() - 1; activityNdx >= 0; --activityNdx) { + ActivityRecord r = activities.get(activityNdx); + if (r.finishing) { continue; } - ActivityRecord r = topTask.topRunningActivityLocked(null); - if (r != null) { - // r will be launched next. + if (r.app != app) { + // This is the dying activity. break; } - // There is an activity in topTask that is finishing. If topTask belongs to the app - // return to home depending on the task flag. + } + if (activityNdx < 0) { + // All activities in task belong to app. Set launchHomeNext to task's value. launchHomeNext = topTask.mOnTopOfHome; - break; } removeHistoryRecordsForAppLocked(app); diff --git a/services/java/com/android/server/am/ActivityStackSupervisor.java b/services/java/com/android/server/am/ActivityStackSupervisor.java index f71870633fdc..2db67d5ce5e7 100644 --- a/services/java/com/android/server/am/ActivityStackSupervisor.java +++ b/services/java/com/android/server/am/ActivityStackSupervisor.java @@ -1932,7 +1932,7 @@ public final class ActivityStackSupervisor { for (int stackNdx = 0; stackNdx < numStacks; ++stackNdx) { final ActivityStack stack = mStacks.get(stackNdx); // Only update launchHomeTaskNext for the focused stack. - launchHomeTaskNext |= (stack == focusedStack && stack.handleAppDiedLocked(app)); + launchHomeTaskNext |= (stack.handleAppDiedLocked(app) && stack == focusedStack); } if (!restarting) { |