diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java index 64e1ae5b8c9e5..68d60b0544227 100644 --- a/services/core/java/com/android/server/wm/ActivityRecord.java +++ b/services/core/java/com/android/server/wm/ActivityRecord.java @@ -5311,6 +5311,13 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A if (finishing || isState(STOPPED)) { displayContent.mUnknownAppVisibilityController.appRemovedOrHidden(this); } + // Because starting window was transferred, this activity may be a trampoline which has + // been occluded by next activity. If it has added windows, set client visibility + // immediately to avoid the client getting RELAYOUT_RES_FIRST_TIME from relayout and + // drawing an unnecessary frame. + if (startingMoved && !firstWindowDrawn && hasChild()) { + setClientVisible(false); + } } else { if (!appTransition.isTransitionSet() && appTransition.isReady()) {