From 8aef548893f7fbf57f7cd3fa179ef88ed69e80c8 Mon Sep 17 00:00:00 2001 From: George Mount Date: Wed, 8 Jun 2022 14:22:41 -0700 Subject: [PATCH] Clear mEnterTransitionCoordinator after content shows. Fixes: 233975804 After content has been shown, we should clear the mEnterTransitonCoordinator so that the exit doesn't accidentally try to use the enter transition information to remove Views. Test: manually tested example from bug report Change-Id: Ida7ca354cb75953d1d5ecffc159da0d7320d4349 --- core/java/android/app/ActivityTransitionState.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/core/java/android/app/ActivityTransitionState.java b/core/java/android/app/ActivityTransitionState.java index 877e7d3b3bf7f..57dacd024ba16 100644 --- a/core/java/android/app/ActivityTransitionState.java +++ b/core/java/android/app/ActivityTransitionState.java @@ -263,6 +263,11 @@ class ActivityTransitionState { // After orientation change, the onResume can come in before the top Activity has // left, so if the Activity is not top, wait a second for the top Activity to exit. if (mEnterTransitionCoordinator == null || activity.isTopOfTask()) { + if (mEnterTransitionCoordinator != null) { + mEnterTransitionCoordinator.runAfterTransitionsComplete(() -> { + mEnterTransitionCoordinator = null; + }); + } restoreExitedViews(); restoreReenteringViews(); } else { @@ -271,6 +276,11 @@ class ActivityTransitionState { public void run() { if (mEnterTransitionCoordinator == null || mEnterTransitionCoordinator.isWaitingForRemoteExit()) { + if (mEnterTransitionCoordinator != null) { + mEnterTransitionCoordinator.runAfterTransitionsComplete(() -> { + mEnterTransitionCoordinator = null; + }); + } restoreExitedViews(); restoreReenteringViews(); } else if (mEnterTransitionCoordinator.isReturning()) {