Handle app dying.
Fix bugs related to handleAppDied.
Fixes bug 8658744.
Change-Id: I0ba2466ffac5e465e803e97a781810c34a6de371
diff --git a/services/java/com/android/server/am/ActivityStackSupervisor.java b/services/java/com/android/server/am/ActivityStackSupervisor.java
index b5e952e..2880b8d 100644
--- a/services/java/com/android/server/am/ActivityStackSupervisor.java
+++ b/services/java/com/android/server/am/ActivityStackSupervisor.java
@@ -147,6 +147,9 @@
}
ActivityStack getTopStack() {
+ if (mFocusedStack == null) {
+ return mHomeStack;
+ }
switch (mStackState) {
case STACK_STATE_HOME_IN_FRONT:
case STACK_STATE_HOME_TO_FRONT:
@@ -378,15 +381,6 @@
return null;
}
- void resumeTopActivitiesLocked() {
- for (int stackNdx = mStacks.size() - 1; stackNdx >= 0; --stackNdx) {
- final ActivityStack stack = mStacks.get(stackNdx);
- if (isFrontStack(stack)) {
- stack.resumeTopActivityLocked(null);
- }
- }
- }
-
ActivityRecord getTasksLocked(int maxNum, IThumbnailReceiver receiver,
PendingThumbnailsRecord pending, List<RunningTaskInfo> list) {
ActivityRecord r = null;
@@ -1501,9 +1495,10 @@
// This not being started from an existing activity, and not part
// of a new task... just put it in the top task, though these days
// this case should never happen.
- targetStack = getLastStack();
+ ActivityStack lastStack = getLastStack();
+ targetStack = lastStack != null ? lastStack : mHomeStack;
moveHomeStack(targetStack.isHomeStack());
- ActivityRecord prev = targetStack.topActivity();
+ ActivityRecord prev = lastStack == null ? null : targetStack.topActivity();
r.setTask(prev != null ? prev.task
: targetStack.createTaskRecord(getNextTaskId(), r.info, intent, true),
null, true);
@@ -1556,7 +1551,10 @@
void resumeTopActivityLocked() {
for (int stackNdx = mStacks.size() - 1; stackNdx >= 0; --stackNdx) {
- mStacks.get(stackNdx).resumeTopActivityLocked(null);
+ final ActivityStack stack = mStacks.get(stackNdx);
+ if (isFrontStack(stack)) {
+ stack.resumeTopActivityLocked(null);
+ }
}
}