From 70ce9e0487deef2264948f4909fad01175a816c7 Mon Sep 17 00:00:00 2001 From: George Mount Date: Fri, 19 Aug 2022 16:58:01 -0700 Subject: [PATCH] Only use return transition when requested. Fixes: 233975804 When exiting back, the activity transition should not run unless an activity transition has been requested. Test: existing ActivityTransitionTests, manually use Settings Change-Id: Ice2cf6d82c25c65076a9656ddd847a9e2aa68b80 --- core/java/android/app/ActivityTransitionState.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/core/java/android/app/ActivityTransitionState.java b/core/java/android/app/ActivityTransitionState.java index 877e7d3b3bf7f..6f4bb456c4783 100644 --- a/core/java/android/app/ActivityTransitionState.java +++ b/core/java/android/app/ActivityTransitionState.java @@ -145,7 +145,10 @@ class ActivityTransitionState { * that it is preserved through activty destroy and restore. */ private ArrayList getPendingExitNames() { - if (mPendingExitNames == null && mEnterTransitionCoordinator != null) { + if (mPendingExitNames == null + && mEnterTransitionCoordinator != null + && !mEnterTransitionCoordinator.isReturning() + ) { mPendingExitNames = mEnterTransitionCoordinator.getPendingExitSharedElementNames(); } return mPendingExitNames; @@ -202,6 +205,7 @@ class ActivityTransitionState { restoreExitedViews(); activity.getWindow().getDecorView().setVisibility(View.VISIBLE); } + getPendingExitNames(); // Set mPendingExitNames before resetting mEnterTransitionCoordinator mEnterTransitionCoordinator = new EnterTransitionCoordinator(activity, resultReceiver, sharedElementNames, mEnterActivityOptions.isReturning(), mEnterActivityOptions.isCrossTask()); @@ -250,6 +254,7 @@ class ActivityTransitionState { public void onStop(Activity activity) { restoreExitedViews(); if (mEnterTransitionCoordinator != null) { + getPendingExitNames(); // Set mPendingExitNames before clearing mEnterTransitionCoordinator.stop(); mEnterTransitionCoordinator = null; } @@ -275,6 +280,7 @@ class ActivityTransitionState { restoreReenteringViews(); } else if (mEnterTransitionCoordinator.isReturning()) { mEnterTransitionCoordinator.runAfterTransitionsComplete(() -> { + getPendingExitNames(); // Set mPendingExitNames before clearing mEnterTransitionCoordinator = null; }); } @@ -374,6 +380,7 @@ class ActivityTransitionState { } public void startExitOutTransition(Activity activity, Bundle options) { + getPendingExitNames(); // Set mPendingExitNames before clearing mEnterTransitionCoordinator mEnterTransitionCoordinator = null; if (!activity.getWindow().hasFeature(Window.FEATURE_ACTIVITY_TRANSITIONS) || mExitTransitionCoordinators == null) {