diff --git a/quickstep/src/com/android/quickstep/RecentsAnimationCallbacks.java b/quickstep/src/com/android/quickstep/RecentsAnimationCallbacks.java index acf61b4142..0f98b325fa 100644 --- a/quickstep/src/com/android/quickstep/RecentsAnimationCallbacks.java +++ b/quickstep/src/com/android/quickstep/RecentsAnimationCallbacks.java @@ -62,6 +62,12 @@ public class RecentsAnimationCallbacks implements mListeners.remove(listener); } + @UiThread + public void removeAllListeners() { + Preconditions.assertUIThread(); + mListeners.clear(); + } + public void notifyAnimationCanceled() { mCancelled = true; onAnimationCanceled(null); diff --git a/quickstep/src/com/android/quickstep/TaskAnimationManager.java b/quickstep/src/com/android/quickstep/TaskAnimationManager.java index e3e8ace96b..c362e52652 100644 --- a/quickstep/src/com/android/quickstep/TaskAnimationManager.java +++ b/quickstep/src/com/android/quickstep/TaskAnimationManager.java @@ -156,9 +156,9 @@ public class TaskAnimationManager implements RecentsAnimationCallbacks.RecentsAn mTargets.release(); } - // Remove gesture state from callbacks - if (mCallbacks != null && mLastGestureState != null) { - mCallbacks.removeListener(mLastGestureState); + // Clean up all listeners to ensure we don't get subsequent callbacks + if (mCallbacks != null) { + mCallbacks.removeAllListeners(); } mController = null;