From 14b30bd4982cbf0333dee23916520a593b3bd456 Mon Sep 17 00:00:00 2001 From: wilsonshih Date: Fri, 9 Jun 2023 03:22:43 +0000 Subject: [PATCH] Skip transfer starting window from above if current activity has drawn. If transferred, there is no signal to remove the starting window since the activity is already drawn. The starting window will be remove with above activity. Bug: 283887866 Test: atest ActivityRecordTests SplashscreenTests Change-Id: I0728db35ba8c476290d44462a040de77ab5986b7 --- .../core/java/com/android/server/wm/ActivityRecord.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java index 9f16a84415331..89a4a13c9bd95 100644 --- a/services/core/java/com/android/server/wm/ActivityRecord.java +++ b/services/core/java/com/android/server/wm/ActivityRecord.java @@ -4550,6 +4550,13 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A * immediately finishes after, so we have to transfer T to M. */ void transferStartingWindowFromHiddenAboveTokenIfNeeded() { + final WindowState mainWin = findMainWindow(false); + if (mainWin != null && mainWin.mWinAnimator.getShown()) { + // This activity already has a visible window, so doesn't need to transfer the starting + // window from above activity to here. The starting window will be removed with above + // activity. + return; + } task.forAllActivities(fromActivity -> { if (fromActivity == this) return true; return !fromActivity.isVisibleRequested() && transferStartingWindow(fromActivity);