diff --git a/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java b/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java index 7f38923671..524cd53839 100644 --- a/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java +++ b/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java @@ -140,7 +140,8 @@ public abstract class AbsSwipeUpHandler, private final ArrayList mRecentsAnimationStartCallbacks = new ArrayList<>(); private final OnScrollChangedListener mOnRecentsScrollListener = this::onRecentsViewScroll; - protected RecentsAnimationController mRecentsAnimationController; + // Null if the recents animation hasn't started yet or has been canceled or finished. + protected @Nullable RecentsAnimationController mRecentsAnimationController; protected RecentsAnimationTargets mRecentsAnimationTargets; protected T mActivity; protected Q mRecentsView; @@ -1353,8 +1354,10 @@ public abstract class AbsSwipeUpHandler, @UiThread private void resumeLastTask() { - mRecentsAnimationController.finish(false /* toRecents */, null); - ActiveGestureLog.INSTANCE.addLog("finishRecentsAnimation", false); + if (mRecentsAnimationController != null) { + mRecentsAnimationController.finish(false /* toRecents */, null); + ActiveGestureLog.INSTANCE.addLog("finishRecentsAnimation", false); + } doLogGesture(LAST_TASK, null); reset(); } @@ -1662,13 +1665,17 @@ public abstract class AbsSwipeUpHandler, } } else { mActivityInterface.onLaunchTaskFailed(); - mRecentsAnimationController.finish(true /* toRecents */, null); + if (mRecentsAnimationController != null) { + mRecentsAnimationController.finish(true /* toRecents */, null); + } } }, true /* freezeTaskList */); } else { mActivityInterface.onLaunchTaskFailed(); Toast.makeText(mContext, R.string.activity_not_available, LENGTH_SHORT).show(); - mRecentsAnimationController.finish(true /* toRecents */, null); + if (mRecentsAnimationController != null) { + mRecentsAnimationController.finish(true /* toRecents */, null); + } } } mCanceled = false;