diff options
| -rw-r--r-- | services/core/java/com/android/server/wm/ActivityStarter.java | 4 | ||||
| -rw-r--r-- | services/core/java/com/android/server/wm/Transition.java | 6 |
2 files changed, 9 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/wm/ActivityStarter.java b/services/core/java/com/android/server/wm/ActivityStarter.java index e9c08e0ac29d..717c3998aba4 100644 --- a/services/core/java/com/android/server/wm/ActivityStarter.java +++ b/services/core/java/com/android/server/wm/ActivityStarter.java @@ -1649,7 +1649,8 @@ class ActivityStarter { // activity, so this isn't just deliver-to-top && mMovedToTopActivity == null && !transitionController.hasOrderChanges() - && !transitionController.isTransientHide(startedActivityRootTask)) { + && !transitionController.isTransientHide(startedActivityRootTask) + && !newTransition.hasChanged(mLastStartActivityRecord)) { // We just delivered to top, so there isn't an actual transition here. if (!forceTransientTransition) { newTransition.abort(); @@ -1792,6 +1793,7 @@ class ActivityStarter { activity.destroyIfPossible("Removes redundant singleInstance"); } } + targetTaskTop.mTransitionController.collect(targetTaskTop); recordTransientLaunchIfNeeded(targetTaskTop); // Recycle the target task for this launch. startResult = diff --git a/services/core/java/com/android/server/wm/Transition.java b/services/core/java/com/android/server/wm/Transition.java index a029f38de128..a0d65f30ccb1 100644 --- a/services/core/java/com/android/server/wm/Transition.java +++ b/services/core/java/com/android/server/wm/Transition.java @@ -3230,6 +3230,12 @@ class Transition implements BLASTSyncEngine.TransactionReadyListener { Trace.asyncTraceForTrackEnd(Trace.TRACE_TAG_WINDOW_MANAGER, TAG, cookie); } + boolean hasChanged(WindowContainer wc) { + final ChangeInfo chg = mChanges.get(wc); + if (chg == null) return false; + return chg.hasChanged(); + } + @VisibleForTesting static class ChangeInfo { private static final int FLAG_NONE = 0; |