diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java index b61a2cefc6df5..4cc4851164eec 100644 --- a/services/core/java/com/android/server/wm/ActivityRecord.java +++ b/services/core/java/com/android/server/wm/ActivityRecord.java @@ -1723,10 +1723,9 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A // The snapshot of home is only used once because it won't be updated while screen // is on (see {@link TaskSnapshotController#screenTurningOff}). mWmService.mTaskSnapshotController.removeSnapshotCache(task.mTaskId); - // TODO(b/9684093): Use more general condition to specify the case. - if (mDisplayContent.mAppTransition - .getAppTransition() != WindowManager.TRANSIT_KEYGUARD_GOING_AWAY) { - // Only use snapshot of home as starting window when unlocking. + if ((mDisplayContent.mAppTransition.getTransitFlags() + & WindowManager.TRANSIT_FLAG_KEYGUARD_GOING_AWAY_NO_ANIMATION) == 0) { + // Only use snapshot of home as starting window when unlocking directly. return false; } } diff --git a/services/core/java/com/android/server/wm/DisplayPolicy.java b/services/core/java/com/android/server/wm/DisplayPolicy.java index a96e3a611e6d7..e443fe42a82e1 100644 --- a/services/core/java/com/android/server/wm/DisplayPolicy.java +++ b/services/core/java/com/android/server/wm/DisplayPolicy.java @@ -1183,6 +1183,11 @@ public class DisplayPolicy { if (transit == TRANSIT_PREVIEW_DONE) { if (win.hasAppShownWindows()) { + if (win.isActivityTypeHome()) { + // Dismiss the starting window as soon as possible to avoid the crossfade out + // with old content because home is easier to have different UI states. + return ANIMATION_NONE; + } if (DEBUG_ANIM) Slog.i(TAG, "**** STARTING EXIT"); return R.anim.app_starting_exit; } diff --git a/services/core/java/com/android/server/wm/TaskSnapshotController.java b/services/core/java/com/android/server/wm/TaskSnapshotController.java index 10d6823c850f5..d8091edb91700 100644 --- a/services/core/java/com/android/server/wm/TaskSnapshotController.java +++ b/services/core/java/com/android/server/wm/TaskSnapshotController.java @@ -559,8 +559,10 @@ class TaskSnapshotController { } }); // Allow taking snapshot of home when turning screen off to reduce the delay of - // unlocking/waking to home. - snapshotTasks(mTmpTasks, true /* allowSnapshotHome */); + // waking from secure lock to home. + final boolean allowSnapshotHome = + mService.mPolicy.isKeyguardSecure(mService.mCurrentUserId); + snapshotTasks(mTmpTasks, allowSnapshotHome); } } finally { listener.onScreenOff();