Fix stack transfer bug.

Set the focused stack to the task with the started activity. Do not refocus
when activities report resume.

Add more conditional debug.

Fixes bug 9481679.

Change-Id: Ib7134e88f9a2c8ad1703af0d43442c8bbe4e65dc
diff --git a/services/java/com/android/server/am/ActivityStackSupervisor.java b/services/java/com/android/server/am/ActivityStackSupervisor.java
index 8224c88a..a4fd7ad 100644
--- a/services/java/com/android/server/am/ActivityStackSupervisor.java
+++ b/services/java/com/android/server/am/ActivityStackSupervisor.java
@@ -1186,7 +1186,8 @@
     }
 
     ActivityStack getCorrectStack(ActivityRecord r) {
-        if (r.isApplicationActivity() || (r.task != null && r.task.isApplicationTask())) {
+        final TaskRecord task = r.task;
+        if (r.isApplicationActivity() || (task != null && task.isApplicationTask())) {
             int stackNdx;
             for (stackNdx = mStacks.size() - 1; stackNdx > 0; --stackNdx) {
                 if (mStacks.get(stackNdx).mCurrentUser == mCurrentUser) {
@@ -1199,6 +1200,9 @@
                         StackBox.TASK_STACK_GOES_OVER, 1.0f);
                 mFocusedStack = getStack(stackId);
             }
+            if (task != null) {
+                mFocusedStack = task.stack;
+            }
             return mFocusedStack;
         }
         return mHomeStack;
@@ -1649,6 +1653,7 @@
         ActivityStack.logStartActivity(EventLogTags.AM_CREATE_ACTIVITY, r, r.task);
         setLaunchHomeTaskNextFlag(sourceRecord, r, targetStack);
         targetStack.startActivityLocked(r, newTask, doResume, keepCurTransition, options);
+        mService.setFocusedActivityLocked(r);
         return ActivityManager.START_SUCCESS;
     }
 
@@ -1867,6 +1872,8 @@
     void findTaskToMoveToFrontLocked(int taskId, int flags, Bundle options) {
         for (int stackNdx = mStacks.size() - 1; stackNdx >= 0; --stackNdx) {
             if (mStacks.get(stackNdx).findTaskToMoveToFrontLocked(taskId, flags, options)) {
+                if (DEBUG_STACK) Slog.d(TAG, "findTaskToMoveToFront: moved to front of stack=" + 
+                        mStacks.get(stackNdx));
                 return;
             }
         }
@@ -2053,7 +2060,6 @@
         final ActivityStack stack = r.task.stack;
         if (isFrontStack(stack)) {
             mService.updateUsageStats(r, true);
-            mService.setFocusedActivityLocked(r);
         }
         if (allResumedActivitiesComplete()) {
             ensureActivitiesVisibleLocked(null, 0);