From 3b61847cf254903b2a0c630063e8cba0b9714803 Mon Sep 17 00:00:00 2001 From: Riddle Hsu Date: Wed, 17 Nov 2021 19:07:07 +0800 Subject: [PATCH] Execute transition by starting window only if it is forward type Otherwise if the onStartingWindowDrawn is called for a transferred starting window, it may be too early to execute the close transition which is triggered by previous finishing trampoline activity. Bug: 206513982 Test: setprop persist.debug.shell_transit 1; reboot atest StartActivityTests#testStartActivityFromFinishingActivity Change-Id: I4ff020384092b2c95ca9038a9a3fcb7515f398d5 --- services/core/java/com/android/server/wm/ActivityRecord.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java index 5b062fccc2b26..ea22d92c1e200 100644 --- a/services/core/java/com/android/server/wm/ActivityRecord.java +++ b/services/core/java/com/android/server/wm/ActivityRecord.java @@ -5971,10 +5971,11 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A // because it may be a trampoline. if (!wasTaskVisible && mStartingData != null && !finishing && !mLaunchedFromBubble && !mDisplayContent.mAppTransition.isReady() - && !mDisplayContent.mAppTransition.isRunning()) { + && !mDisplayContent.mAppTransition.isRunning() + && mDisplayContent.isNextTransitionForward()) { // The pending transition state will be cleared after the transition is started, so // save the state for launching the client later (used by LaunchActivityItem). - mStartingData.mIsTransitionForward = mDisplayContent.isNextTransitionForward(); + mStartingData.mIsTransitionForward = true; mDisplayContent.executeAppTransition(); } }