Extend clearing of mLastPausedActivity.

Add more locations where mLastPausedActivity must be set null before
calling resumeTopActivityLocked().

Also separate the "No History" activity from mLastPausedActivity by
adding mLastNoHistoryActivity. This is necessary because now
mLastPausedActivity will be null when mLastNoHistoryActivity
is checked.

Continues to fix bug 10022212.

Change-Id: Ida543b0638c865127691dc51a6e0635062539659
diff --git a/services/java/com/android/server/am/ActivityStackSupervisor.java b/services/java/com/android/server/am/ActivityStackSupervisor.java
index 1681c2d..dd12565 100644
--- a/services/java/com/android/server/am/ActivityStackSupervisor.java
+++ b/services/java/com/android/server/am/ActivityStackSupervisor.java
@@ -1398,6 +1398,7 @@
                         r.task = intentActivity.task;
                     }
                     targetStack = intentActivity.task.stack;
+                    targetStack.mLastPausedActivity = null;
                     moveHomeStack(targetStack.isHomeStack());
                     if (intentActivity.task.intent == null) {
                         // This task was started because of movement of
@@ -1575,6 +1576,7 @@
                                     top.task);
                             // For paranoia, make sure we have correctly
                             // resumed the top activity.
+                            topStack.mLastPausedActivity = null;
                             if (doResume) {
                                 setLaunchHomeTaskNextFlag(sourceRecord, null, topStack);
                                 resumeTopActivitiesLocked();
@@ -1653,6 +1655,7 @@
                     top.deliverNewIntentLocked(callingUid, r.intent);
                     // For paranoia, make sure we have correctly
                     // resumed the top activity.
+                    targetStack.mLastPausedActivity = null;
                     if (doResume) {
                         setLaunchHomeTaskNextFlag(sourceRecord, null, targetStack);
                         targetStack.resumeTopActivityLocked(null);
@@ -1675,6 +1678,7 @@
                     ActivityStack.logStartActivity(EventLogTags.AM_NEW_INTENT, r, task);
                     top.updateOptionsLocked(options);
                     top.deliverNewIntentLocked(callingUid, r.intent);
+                    targetStack.mLastPausedActivity = null;
                     if (doResume) {
                         setLaunchHomeTaskNextFlag(sourceRecord, null, targetStack);
                         targetStack.resumeTopActivityLocked(null);
@@ -1714,6 +1718,7 @@
         }
         ActivityStack.logStartActivity(EventLogTags.AM_CREATE_ACTIVITY, r, r.task);
         setLaunchHomeTaskNextFlag(sourceRecord, r, targetStack);
+        targetStack.mLastPausedActivity = null;
         targetStack.startActivityLocked(r, newTask, doResume, keepCurTransition, options);
         mService.setFocusedActivityLocked(r);
         return ActivityManager.START_SUCCESS;
@@ -2390,7 +2395,10 @@
                         "    mLastPausedActivity: ");
                 if (pr) {
                     printed = true;
+                    needSep = true;
                 }
+                printed |= printThisActivity(pw, stack.mLastNoHistoryActivity, dumpPackage,
+                        needSep, "    mLastNoHistoryActivity: ");
             }
             needSep = printed;
         }