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);
+            }
         }
     }