summaryrefslogtreecommitdiffstats
path: root/services/java/com/android/server/am/ActivityStackSupervisor.java
diff options
context:
space:
mode:
Diffstat (limited to 'services/java/com/android/server/am/ActivityStackSupervisor.java')
-rw-r--r--services/java/com/android/server/am/ActivityStackSupervisor.java22
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);
+ }
+ }
}
}