diff options
Diffstat (limited to 'services/java/com/android/server/am/ActivityStackSupervisor.java')
-rw-r--r-- | services/java/com/android/server/am/ActivityStackSupervisor.java | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/services/java/com/android/server/am/ActivityStackSupervisor.java b/services/java/com/android/server/am/ActivityStackSupervisor.java index 1ee13ec..bf91904 100644 --- a/services/java/com/android/server/am/ActivityStackSupervisor.java +++ b/services/java/com/android/server/am/ActivityStackSupervisor.java @@ -1932,10 +1932,28 @@ public final class ActivityStackSupervisor { } void handleAppDiedLocked(ProcessRecord app, boolean restarting) { - // Just in case. + boolean launchHomeTaskNext = false; + final ActivityStack focusedStack = getFocusedStack(); final int numStacks = mStacks.size(); for (int stackNdx = 0; stackNdx < numStacks; ++stackNdx) { - mStacks.get(stackNdx).handleAppDiedLocked(app, restarting); + final ActivityStack stack = mStacks.get(stackNdx); + // Only update launchHomeTaskNext for the focused stack. + launchHomeTaskNext |= (stack == focusedStack && stack.handleAppDiedLocked(app)); + } + + if (!restarting) { + if (launchHomeTaskNext) { + resumeHomeActivity(null); + } else { + if (!resumeTopActivitiesLocked(focusedStack, null, null)) { + // If there was nothing to resume, and we are not already + // restarting this process, but there is a visible activity that + // is hosted by the process... then make sure all visible + // activities are running, taking care of restarting this + // process. + ensureActivitiesVisibleLocked(null, 0); + } + } } } |