OSDN Git Service

Only resuming starting dontWaitForPause activity once
authorWale Ogunwale <ogunwale@google.com>
Mon, 23 May 2016 17:56:33 +0000 (10:56 -0700)
committerWale Ogunwale <ogunwale@google.com>
Mon, 23 May 2016 17:56:33 +0000 (10:56 -0700)
For a starting activity that doesn't wait for pause, we can resume it
when ensuring visible activities when pausing back stacks. If this
happens, there is no need to try to resume it again.

Bug: 28853615
Change-Id: Iee40b80eb13ab3fd65fdce0c100c4051e64f229f

services/core/java/com/android/server/am/ActivityStack.java

index 9718ae8..8b637e0 100644 (file)
@@ -2258,6 +2258,20 @@ final class ActivityStack {
             }
             if (DEBUG_STACK) mStackSupervisor.validateTopActivitiesLocked();
             return true;
+        } else if (mResumedActivity == next && next.state == ActivityState.RESUMED &&
+                mStackSupervisor.allResumedActivitiesComplete()) {
+            // It is possible for the activity to be resumed when we paused back stacks above if the
+            // next activity doesn't have to wait for pause to complete.
+            // So, nothing else to-do except:
+            // Make sure we have executed any pending transitions, since there
+            // should be nothing left to do at this point.
+            mWindowManager.executeAppTransition();
+            mNoAnimActivities.clear();
+            ActivityOptions.abort(options);
+            if (DEBUG_STATES) Slog.d(TAG_STATES,
+                    "resumeTopActivityLocked: Top activity resumed (dontWaitForPause) " + next);
+            if (DEBUG_STACK) mStackSupervisor.validateTopActivitiesLocked();
+            return true;
         }
 
         // If the most recent activity was noHistory but was only stopped rather