diff --git a/packages/SystemUI/src/com/android/systemui/recents/Recents.java b/packages/SystemUI/src/com/android/systemui/recents/Recents.java index 4a8b43ec62db6..3e1522d2b53c6 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/Recents.java +++ b/packages/SystemUI/src/com/android/systemui/recents/Recents.java @@ -565,6 +565,13 @@ public class Recents extends SystemUI mImpl.showPrevAffiliatedTask(); } + @Override + public void appTransitionFinished() { + // Fallback, reset the flag once an app transition ends + EventBus.getDefault().send(new SetWaitingForTransitionStartEvent( + false /* waitingForTransitionStart */)); + } + /** * Updates on configuration change. */ diff --git a/packages/SystemUI/src/com/android/systemui/recents/RecentsImpl.java b/packages/SystemUI/src/com/android/systemui/recents/RecentsImpl.java index 79558a33fc4e2..c2a7ed3fdad47 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/RecentsImpl.java +++ b/packages/SystemUI/src/com/android/systemui/recents/RecentsImpl.java @@ -376,6 +376,12 @@ public class RecentsImpl implements ActivityOptions.OnAnimationFinishedListener } public void toggleRecents(int growTarget) { + // Skip preloading if the task is locked + SystemServicesProxy ssp = Recents.getSystemServices(); + if (ssp.isScreenPinningActive()) { + return; + } + // Skip this toggle if we are already waiting to trigger recents via alt-tab if (mFastAltTabTrigger.isDozing()) { return; @@ -391,7 +397,6 @@ public class RecentsImpl implements ActivityOptions.OnAnimationFinishedListener mTriggeredFromAltTab = false; try { - SystemServicesProxy ssp = Recents.getSystemServices(); MutableBoolean isHomeStackVisible = new MutableBoolean(true); long elapsedTime = SystemClock.elapsedRealtime() - mLastToggleTime; @@ -454,11 +459,16 @@ public class RecentsImpl implements ActivityOptions.OnAnimationFinishedListener } public void preloadRecents() { + // Skip preloading if the task is locked + SystemServicesProxy ssp = Recents.getSystemServices(); + if (ssp.isScreenPinningActive()) { + return; + } + // Preload only the raw task list into a new load plan (which will be consumed by the // RecentsActivity) only if there is a task to animate to. Post this to ensure that we // don't block the touch feedback on the nav bar button which triggers this. mHandler.post(() -> { - SystemServicesProxy ssp = Recents.getSystemServices(); MutableBoolean isHomeStackVisible = new MutableBoolean(true); if (!ssp.isRecentsActivityVisible(isHomeStackVisible)) { ActivityManager.RunningTaskInfo runningTask = ssp.getRunningTask();