From 9d4a96ed029fdad1e369d5eedd082938f0dc9e01 Mon Sep 17 00:00:00 2001 From: Riddle Hsu Date: Wed, 30 Sep 2020 00:32:04 +0800 Subject: [PATCH] Add latency metrics for recents gesture Pass the touch down time to RecentsAnimation#startRecentsActivity. Bug: 169221287 Test: Enable statsd log: "adb shell cmd stats print-logs" Touch gesture navigation bar. adb logcat | grep statsd | grep "(48)" The line may contain 0x100000->4[I] 0x110000->20[I] that means 4=by recents and 20=latency 20ms. Change-Id: I81ee804895b7712f4d925736f5b4694c11a12cbe (cherry picked from commit 63623967b83edad56db58173ebb6687c685b9177) --- quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java | 5 +++++ .../com/android/quickstep/RecentsAnimationCallbacks.java | 7 +++++++ .../src/com/android/quickstep/TaskAnimationManager.java | 5 +++-- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java b/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java index dbf75fa154..85995a998f 100644 --- a/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java +++ b/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java @@ -1476,6 +1476,11 @@ public abstract class AbsSwipeUpHandler, Q extends mGestureEndCallback = gestureEndCallback; } + @Override + public long getStartTouchTime() { + return mTouchTimeMs; + } + protected void linkRecentsViewScroll() { SurfaceTransactionApplier.create(mRecentsView, applier -> { mTransformParams.setSyncTransactionApplier(applier); diff --git a/quickstep/src/com/android/quickstep/RecentsAnimationCallbacks.java b/quickstep/src/com/android/quickstep/RecentsAnimationCallbacks.java index a21c7140de..f319b943c6 100644 --- a/quickstep/src/com/android/quickstep/RecentsAnimationCallbacks.java +++ b/quickstep/src/com/android/quickstep/RecentsAnimationCallbacks.java @@ -160,5 +160,12 @@ public class RecentsAnimationCallbacks implements * Callback made when a task started from the recents is ready for an app transition. */ default void onTaskAppeared(RemoteAnimationTargetCompat appearedTaskTarget) {} + + /** + * The time in milliseconds of the touch event that starts the recents animation. + */ + default long getStartTouchTime() { + return 0; + } } } diff --git a/quickstep/src/com/android/quickstep/TaskAnimationManager.java b/quickstep/src/com/android/quickstep/TaskAnimationManager.java index f38c1ea886..797797f3d4 100644 --- a/quickstep/src/com/android/quickstep/TaskAnimationManager.java +++ b/quickstep/src/com/android/quickstep/TaskAnimationManager.java @@ -50,7 +50,7 @@ public class TaskAnimationManager implements RecentsAnimationCallbacks.RecentsAn public void preloadRecentsAnimation(Intent intent) { // Pass null animation handler to indicate this start is for preloading UI_HELPER_EXECUTOR.execute(() -> ActivityManagerWrapper.getInstance() - .startRecentsActivity(intent, null, null, null, null)); + .startRecentsActivity(intent, 0, null, null, null)); } /** @@ -119,10 +119,11 @@ public class TaskAnimationManager implements RecentsAnimationCallbacks.RecentsAn } } }); + final long eventTime = listener.getStartTouchTime(); mCallbacks.addListener(gestureState); mCallbacks.addListener(listener); UI_HELPER_EXECUTOR.execute(() -> ActivityManagerWrapper.getInstance() - .startRecentsActivity(intent, null, mCallbacks, null, null)); + .startRecentsActivity(intent, eventTime, mCallbacks, null, null)); gestureState.setState(STATE_RECENTS_ANIMATION_INITIALIZED); return mCallbacks; }