Merge "If task isn't found in recents, look in the stacks." into lmp-mr1-dev
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index 1cf96c3..682642e 100755
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -8160,6 +8160,16 @@
         }
     }
 
+    private TaskRecord taskForIdLocked(int id) {
+        final TaskRecord task = recentTaskForIdLocked(id);
+        if (task != null) {
+            return task;
+        }
+
+        // Don't give up. Sometimes it just hasn't made it to recents yet.
+        return mStackSupervisor.anyTaskForIdLocked(id);
+    }
+
     private TaskRecord recentTaskForIdLocked(int id) {
         final int N = mRecentTasks.size();
             for (int i=0; i<N; i++) {
@@ -8380,7 +8390,7 @@
      * @return Returns true if the given task was found and removed.
      */
     private boolean removeTaskByIdLocked(int taskId, boolean killProcess) {
-        TaskRecord tr = recentTaskForIdLocked(taskId);
+        TaskRecord tr = taskForIdLocked(taskId);
         if (tr != null) {
             tr.removeTaskActivitiesLocked();
             cleanUpRemovedTaskLocked(tr, killProcess);
@@ -8455,7 +8465,7 @@
                 "moveTaskToBack()");
 
         synchronized(this) {
-            TaskRecord tr = recentTaskForIdLocked(taskId);
+            TaskRecord tr = taskForIdLocked(taskId);
             if (tr != null) {
                 if (tr == mStackSupervisor.mLockTaskModeTask) {
                     mStackSupervisor.showLockTaskToast();
@@ -8647,7 +8657,7 @@
         long ident = Binder.clearCallingIdentity();
         try {
             synchronized (this) {
-                TaskRecord tr = recentTaskForIdLocked(taskId);
+                TaskRecord tr = taskForIdLocked(taskId);
                 return tr != null && tr.stack != null && tr.stack.isHomeStack();
             }
         } finally {
diff --git a/services/core/java/com/android/server/am/ActivityStack.java b/services/core/java/com/android/server/am/ActivityStack.java
index cfcab68..0dae028 100755
--- a/services/core/java/com/android/server/am/ActivityStack.java
+++ b/services/core/java/com/android/server/am/ActivityStack.java
@@ -1643,8 +1643,8 @@
         boolean dontWaitForPause = (next.info.flags&ActivityInfo.FLAG_RESUME_WHILE_PAUSING) != 0;
         boolean pausing = mStackSupervisor.pauseBackStacks(userLeaving, true, dontWaitForPause);
         if (mResumedActivity != null) {
-            pausing |= startPausingLocked(userLeaving, false, true, dontWaitForPause);
             if (DEBUG_STATES) Slog.d(TAG, "resumeTopActivityLocked: Pausing " + mResumedActivity);
+            pausing |= startPausingLocked(userLeaving, false, true, dontWaitForPause);
         }
         if (pausing) {
             if (DEBUG_SWITCH || DEBUG_STATES) Slog.v(TAG,