diff --git a/services/core/java/com/android/server/am/ActivityStack.java b/services/core/java/com/android/server/am/ActivityStack.java index 436eaf6049f2c..671c84e579681 100644 --- a/services/core/java/com/android/server/am/ActivityStack.java +++ b/services/core/java/com/android/server/am/ActivityStack.java @@ -2150,9 +2150,7 @@ final class ActivityStack extends ConfigurationContainer { mStackSupervisor.allResumedActivitiesComplete()) { // 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); + executeAppTransition(options); if (DEBUG_STATES) Slog.d(TAG_STATES, "resumeTopActivityLocked: Top activity resumed " + next); if (DEBUG_STACK) mStackSupervisor.validateTopActivitiesLocked(); @@ -2187,9 +2185,7 @@ final class ActivityStack extends ConfigurationContainer { && mStackSupervisor.allPausedActivitiesComplete()) { // 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); + executeAppTransition(options); if (DEBUG_STATES) Slog.d(TAG_STATES, "resumeTopActivityLocked: Going to sleep and all paused"); if (DEBUG_STACK) mStackSupervisor.validateTopActivitiesLocked(); @@ -2252,9 +2248,7 @@ final class ActivityStack extends ConfigurationContainer { // 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); + executeAppTransition(options); if (DEBUG_STATES) Slog.d(TAG_STATES, "resumeTopActivityLocked: Top activity resumed (dontWaitForPause) " + next); if (DEBUG_STACK) mStackSupervisor.validateTopActivitiesLocked(); @@ -5056,4 +5050,10 @@ final class ActivityStack extends ConfigurationContainer { mTaskHistory.get(taskNdx).setLockTaskAuth(); } } + + void executeAppTransition(ActivityOptions options) { + mWindowManager.executeAppTransition(); + mNoAnimActivities.clear(); + ActivityOptions.abort(options); + } } diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java index db9e0f608efe3..fe261f10885b5 100644 --- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java +++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java @@ -1844,6 +1844,9 @@ public class ActivityStackSupervisor extends ConfigurationContainer final ActivityRecord r = mFocusedStack.topRunningActivityLocked(); if (r == null || r.state != RESUMED) { mFocusedStack.resumeTopActivityUncheckedLocked(null, null); + } else if (r.state == RESUMED) { + // Kick off any lingering app transitions form the MoveTaskToFront operation. + mFocusedStack.executeAppTransition(targetOptions); } return false; }