diff --git a/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java b/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java index 6da2201dc9..30945007a9 100644 --- a/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java +++ b/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java @@ -1334,7 +1334,11 @@ public abstract class AbsSwipeUpHandler, } private void invalidateHandler() { - mInputConsumerProxy.destroy(); + if (!LIVE_TILE.get() || !mActivityInterface.isInLiveTileMode() + || mGestureState.getEndTarget() != RECENTS) { + mInputConsumerProxy.destroy(); + mTaskAnimationManager.setLiveTileCleanUpHandler(null); + } endRunningWindowAnim(false /* cancel */); if (mGestureEndCallback != null) { @@ -1526,6 +1530,7 @@ public abstract class AbsSwipeUpHandler, apps[apps.length - 1] = appearedTaskTarget; launchOtherTaskInLiveTileMode(appearedTaskTarget.taskId, apps); }); + mTaskAnimationManager.setLiveTileCleanUpHandler(mInputConsumerProxy::destroy); ActivityManagerWrapper.getInstance().registerTaskStackListener( mLiveTileRestartListener); } diff --git a/quickstep/src/com/android/quickstep/TaskAnimationManager.java b/quickstep/src/com/android/quickstep/TaskAnimationManager.java index 02c27636fc..9a454f2bd7 100644 --- a/quickstep/src/com/android/quickstep/TaskAnimationManager.java +++ b/quickstep/src/com/android/quickstep/TaskAnimationManager.java @@ -50,6 +50,7 @@ public class TaskAnimationManager implements RecentsAnimationCallbacks.RecentsAn private GestureState mLastGestureState; private RemoteAnimationTargetCompat mLastAppearedTaskTarget; private Consumer mLaunchOtherTaskHandler; + private Runnable mLiveTileCleanUpHandler; private Context mCtx; TaskAnimationManager(Context ctx) { @@ -169,6 +170,10 @@ public class TaskAnimationManager implements RecentsAnimationCallbacks.RecentsAn mLaunchOtherTaskHandler = handler; } + public void setLiveTileCleanUpHandler(Runnable runnable) { + mLiveTileCleanUpHandler = runnable; + } + /** * Finishes the running recents animation. */ @@ -206,6 +211,11 @@ public class TaskAnimationManager implements RecentsAnimationCallbacks.RecentsAn * Cleans up the recents animation entirely. */ private void cleanUpRecentsAnimation() { + if (mLiveTileCleanUpHandler != null) { + mLiveTileCleanUpHandler.run(); + mLiveTileCleanUpHandler = null; + } + // Release all the target leashes if (mTargets != null) { mTargets.release();