From cac5c322da0b81a1a2106c8e248b0fe476f1ea6b Mon Sep 17 00:00:00 2001 From: Wale Ogunwale Date: Mon, 23 May 2016 10:56:33 -0700 Subject: [PATCH] Only resuming starting dontWaitForPause activity once 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 --- .../java/com/android/server/am/ActivityStack.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/services/core/java/com/android/server/am/ActivityStack.java b/services/core/java/com/android/server/am/ActivityStack.java index 9718ae86d42ef..8b637e0ae44d4 100644 --- a/services/core/java/com/android/server/am/ActivityStack.java +++ b/services/core/java/com/android/server/am/ActivityStack.java @@ -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