summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/wm/ActivityStarter.java4
-rw-r--r--services/core/java/com/android/server/wm/Transition.java6
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;