diff options
| author | 2021-06-24 01:41:09 +0000 | |
|---|---|---|
| committer | 2021-06-24 01:41:09 +0000 | |
| commit | 3abf2a7ca976419e53fec8d057f580dfa5da7589 (patch) | |
| tree | cbbd442797c07054dacc501742af09fd61660b1b | |
| parent | 388e0cba03a95bd224ff8563cce93f354a85699c (diff) | |
| parent | ed9c44a27331ff535611d715ccea5b3edcfffc6c (diff) | |
Merge "Create splash screen if activity launched with FLAG_ACTIVITY_CLEAR_TASK" into sc-dev
| -rw-r--r-- | services/core/java/com/android/server/wm/ActivityRecord.java | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java index dcf7081392ab..30cd97e110ee 100644 --- a/services/core/java/com/android/server/wm/ActivityRecord.java +++ b/services/core/java/com/android/server/wm/ActivityRecord.java @@ -6286,12 +6286,18 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A final int resolvedTheme = evaluateStartingWindowTheme(prev, packageName, theme, splashScreenTheme); + final boolean activityCreated = + mState.ordinal() >= STARTED.ordinal() && mState.ordinal() <= STOPPED.ordinal(); + // If this activity is just created and all activities below are finish, treat this + // scenario as warm launch. + final boolean newSingleActivity = !newTask && !activityCreated + && task.getActivity((r) -> !r.finishing && r != this) == null; + final boolean shown = addStartingWindow(packageName, resolvedTheme, compatInfo, nonLocalizedLabel, labelRes, icon, logo, windowFlags, - prev != null ? prev.appToken : null, newTask, taskSwitch, isProcessRunning(), - allowTaskSnapshot(), - mState.ordinal() >= STARTED.ordinal() && mState.ordinal() <= STOPPED.ordinal(), - mSplashScreenStyleEmpty); + prev != null ? prev.appToken : null, + newTask || newSingleActivity, taskSwitch, isProcessRunning(), + allowTaskSnapshot(), activityCreated, mSplashScreenStyleEmpty); if (shown) { mStartingWindowState = STARTING_WINDOW_SHOWN; } |