Loading quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java +21 −43 Original line number Diff line number Diff line Loading @@ -63,7 +63,6 @@ import android.graphics.Matrix; import android.graphics.PointF; import android.graphics.Rect; import android.os.Build; import android.os.Handler; import android.os.IBinder; import android.os.SystemClock; import android.view.MotionEvent; Loading Loading @@ -136,7 +135,6 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>, protected final BaseActivityInterface<S, T> mActivityInterface; protected final InputConsumerProxy mInputConsumerProxy; protected final ActivityInitListener mActivityInitListener; private final Handler mHandler = new Handler(); // Callbacks to be made once the recents animation starts private final ArrayList<Runnable> mRecentsAnimationStartCallbacks = new ArrayList<>(); private final OnScrollChangedListener mOnRecentsScrollListener = this::onRecentsViewScroll; Loading @@ -148,9 +146,6 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>, protected Runnable mGestureEndCallback; protected MultiStateCallback mStateCallback; protected boolean mCanceled; // One time flag set when onConsumerAboutToBeSwitched() is called, indicating that certain // shared animations should not be canceled when this handler is invalidated private boolean mConsumerIsSwitching; private boolean mRecentsViewScrollLinked = false; private static int getFlagForIndex(int index, String name) { Loading Loading @@ -1007,14 +1002,7 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>, animateToProgress(startShift, endShift, duration, interpolator, endTarget, velocity); } private int getLogGestureTaskIndex(@Nullable TaskView targetTask) { return mRecentsView == null || targetTask == null ? LOG_NO_OP_PAGE_INDEX : mRecentsView.indexOfChild(targetTask); } private void doLogGesture(GestureEndTarget endTarget, @Nullable TaskView targetTask, int pageIndex) { private void doLogGesture(GestureEndTarget endTarget, @Nullable TaskView targetTask) { StatsLogManager.EventEnum event; switch (endTarget) { case HOME: Loading Loading @@ -1043,6 +1031,9 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>, // We probably never received an animation controller, skip logging. return; } int pageIndex = endTarget == LAST_TASK ? LOG_NO_OP_PAGE_INDEX : mRecentsView.getNextPage(); // TODO: set correct container using the pageIndex logger.log(event); } Loading Loading @@ -1294,19 +1285,19 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>, } public void onConsumerAboutToBeSwitched() { mConsumerIsSwitching = true; if (mActivity != null) { // In the off chance that the gesture ends before Launcher is started, we should clear // the callback here so that it doesn't update with the wrong state mActivity.clearRunOnceOnStartCallback(); resetLauncherListeners(); } if (mGestureState.getEndTarget() != null && !mGestureState.isRunningAnimationToLauncher()) { cancelCurrentAnimation(); } else { mStateCallback.setStateOnUiThread(STATE_FINISH_WITH_NO_END); } reset(); } } public boolean isCanceled() { return mCanceled; Loading @@ -1316,14 +1307,13 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>, private void resumeLastTask() { mRecentsAnimationController.finish(false /* toRecents */, null); ActiveGestureLog.INSTANCE.addLog("finishRecentsAnimation", false); doLogGesture(LAST_TASK, null, getLogGestureTaskIndex(null)); doLogGesture(LAST_TASK, null); reset(); } @UiThread private void startNewTask() { TaskView taskToLaunch = mRecentsView == null ? null : mRecentsView.getNextPageTaskView(); int taskPageIndex = getLogGestureTaskIndex(taskToLaunch); startNewTask(success -> { if (!success) { reset(); Loading @@ -1332,7 +1322,7 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>, endLauncherTransitionController(); updateSysUiFlags(1 /* windowProgress == overview */); } doLogGesture(NEW_TASK, taskToLaunch, taskPageIndex); doLogGesture(NEW_TASK, taskToLaunch); }); } Loading Loading @@ -1366,39 +1356,29 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>, } private void invalidateHandler() { if (!mConsumerIsSwitching) { if (!LIVE_TILE.get() || !mActivityInterface.isInLiveTileMode() || mGestureState.getEndTarget() != RECENTS) { mInputConsumerProxy.destroy(); mTaskAnimationManager.setLiveTileCleanUpHandler(null); } mInputConsumerProxy.unregisterCallback(); endRunningWindowAnim(false /* cancel */); if (mGestureEndCallback != null) { mGestureEndCallback.run(); } } mInputConsumerProxy.unregisterCallback(); mActivityInitListener.unregister(); ActivityManagerWrapper.getInstance().unregisterTaskStackListener(mActivityRestartListener); mTaskSnapshot = null; } private void invalidateHandlerWithLauncher() { if (!mConsumerIsSwitching) { endLauncherTransitionController(); mRecentsView.onGestureAnimationEnd(); } mRecentsView.removeOnScrollChangedListener(mOnRecentsScrollListener); mRecentsView.onGestureAnimationEnd(); resetLauncherListeners(); mHandler.post(() -> { // Defer clearing the activity since invalidation can happen over multiple callbacks. mActivity = null; mRecentsView = null; }); } private void endLauncherTransitionController() { Loading Loading @@ -1516,8 +1496,7 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>, () -> mStateCallback.setStateOnUiThread(STATE_CURRENT_TASK_FINISHED)); } ActiveGestureLog.INSTANCE.addLog("finishRecentsAnimation", true); TaskView taskToLaunch = mRecentsView == null ? null : mRecentsView.getCurrentPageTaskView(); doLogGesture(HOME, taskToLaunch, getLogGestureTaskIndex(taskToLaunch)); doLogGesture(HOME, mRecentsView == null ? null : mRecentsView.getCurrentPageTaskView()); } /** Loading Loading @@ -1548,8 +1527,7 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>, } SystemUiProxy.INSTANCE.get(mContext).onOverviewShown(false, TAG); TaskView taskToLaunch = mRecentsView.getCurrentPageTaskView(); doLogGesture(RECENTS, taskToLaunch, getLogGestureTaskIndex(taskToLaunch)); doLogGesture(RECENTS, mRecentsView.getCurrentPageTaskView()); reset(); } Loading Loading
quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java +21 −43 Original line number Diff line number Diff line Loading @@ -63,7 +63,6 @@ import android.graphics.Matrix; import android.graphics.PointF; import android.graphics.Rect; import android.os.Build; import android.os.Handler; import android.os.IBinder; import android.os.SystemClock; import android.view.MotionEvent; Loading Loading @@ -136,7 +135,6 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>, protected final BaseActivityInterface<S, T> mActivityInterface; protected final InputConsumerProxy mInputConsumerProxy; protected final ActivityInitListener mActivityInitListener; private final Handler mHandler = new Handler(); // Callbacks to be made once the recents animation starts private final ArrayList<Runnable> mRecentsAnimationStartCallbacks = new ArrayList<>(); private final OnScrollChangedListener mOnRecentsScrollListener = this::onRecentsViewScroll; Loading @@ -148,9 +146,6 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>, protected Runnable mGestureEndCallback; protected MultiStateCallback mStateCallback; protected boolean mCanceled; // One time flag set when onConsumerAboutToBeSwitched() is called, indicating that certain // shared animations should not be canceled when this handler is invalidated private boolean mConsumerIsSwitching; private boolean mRecentsViewScrollLinked = false; private static int getFlagForIndex(int index, String name) { Loading Loading @@ -1007,14 +1002,7 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>, animateToProgress(startShift, endShift, duration, interpolator, endTarget, velocity); } private int getLogGestureTaskIndex(@Nullable TaskView targetTask) { return mRecentsView == null || targetTask == null ? LOG_NO_OP_PAGE_INDEX : mRecentsView.indexOfChild(targetTask); } private void doLogGesture(GestureEndTarget endTarget, @Nullable TaskView targetTask, int pageIndex) { private void doLogGesture(GestureEndTarget endTarget, @Nullable TaskView targetTask) { StatsLogManager.EventEnum event; switch (endTarget) { case HOME: Loading Loading @@ -1043,6 +1031,9 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>, // We probably never received an animation controller, skip logging. return; } int pageIndex = endTarget == LAST_TASK ? LOG_NO_OP_PAGE_INDEX : mRecentsView.getNextPage(); // TODO: set correct container using the pageIndex logger.log(event); } Loading Loading @@ -1294,19 +1285,19 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>, } public void onConsumerAboutToBeSwitched() { mConsumerIsSwitching = true; if (mActivity != null) { // In the off chance that the gesture ends before Launcher is started, we should clear // the callback here so that it doesn't update with the wrong state mActivity.clearRunOnceOnStartCallback(); resetLauncherListeners(); } if (mGestureState.getEndTarget() != null && !mGestureState.isRunningAnimationToLauncher()) { cancelCurrentAnimation(); } else { mStateCallback.setStateOnUiThread(STATE_FINISH_WITH_NO_END); } reset(); } } public boolean isCanceled() { return mCanceled; Loading @@ -1316,14 +1307,13 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>, private void resumeLastTask() { mRecentsAnimationController.finish(false /* toRecents */, null); ActiveGestureLog.INSTANCE.addLog("finishRecentsAnimation", false); doLogGesture(LAST_TASK, null, getLogGestureTaskIndex(null)); doLogGesture(LAST_TASK, null); reset(); } @UiThread private void startNewTask() { TaskView taskToLaunch = mRecentsView == null ? null : mRecentsView.getNextPageTaskView(); int taskPageIndex = getLogGestureTaskIndex(taskToLaunch); startNewTask(success -> { if (!success) { reset(); Loading @@ -1332,7 +1322,7 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>, endLauncherTransitionController(); updateSysUiFlags(1 /* windowProgress == overview */); } doLogGesture(NEW_TASK, taskToLaunch, taskPageIndex); doLogGesture(NEW_TASK, taskToLaunch); }); } Loading Loading @@ -1366,39 +1356,29 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>, } private void invalidateHandler() { if (!mConsumerIsSwitching) { if (!LIVE_TILE.get() || !mActivityInterface.isInLiveTileMode() || mGestureState.getEndTarget() != RECENTS) { mInputConsumerProxy.destroy(); mTaskAnimationManager.setLiveTileCleanUpHandler(null); } mInputConsumerProxy.unregisterCallback(); endRunningWindowAnim(false /* cancel */); if (mGestureEndCallback != null) { mGestureEndCallback.run(); } } mInputConsumerProxy.unregisterCallback(); mActivityInitListener.unregister(); ActivityManagerWrapper.getInstance().unregisterTaskStackListener(mActivityRestartListener); mTaskSnapshot = null; } private void invalidateHandlerWithLauncher() { if (!mConsumerIsSwitching) { endLauncherTransitionController(); mRecentsView.onGestureAnimationEnd(); } mRecentsView.removeOnScrollChangedListener(mOnRecentsScrollListener); mRecentsView.onGestureAnimationEnd(); resetLauncherListeners(); mHandler.post(() -> { // Defer clearing the activity since invalidation can happen over multiple callbacks. mActivity = null; mRecentsView = null; }); } private void endLauncherTransitionController() { Loading Loading @@ -1516,8 +1496,7 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>, () -> mStateCallback.setStateOnUiThread(STATE_CURRENT_TASK_FINISHED)); } ActiveGestureLog.INSTANCE.addLog("finishRecentsAnimation", true); TaskView taskToLaunch = mRecentsView == null ? null : mRecentsView.getCurrentPageTaskView(); doLogGesture(HOME, taskToLaunch, getLogGestureTaskIndex(taskToLaunch)); doLogGesture(HOME, mRecentsView == null ? null : mRecentsView.getCurrentPageTaskView()); } /** Loading Loading @@ -1548,8 +1527,7 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>, } SystemUiProxy.INSTANCE.get(mContext).onOverviewShown(false, TAG); TaskView taskToLaunch = mRecentsView.getCurrentPageTaskView(); doLogGesture(RECENTS, taskToLaunch, getLogGestureTaskIndex(taskToLaunch)); doLogGesture(RECENTS, mRecentsView.getCurrentPageTaskView()); reset(); } Loading