diff options
| author | Wu Ahan <ahanwu@google.com> | 2021-10-19 11:46:00 +0000 |
|---|---|---|
| committer | Wu Ahan <ahanwu@google.com> | 2021-10-25 03:56:42 +0000 |
| commit | 61cd0b63c409814fd00350845ef0b94e1a69144a (patch) | |
| tree | 0ac3179ba59d43687108f8a88bd4f21ab37c5af1 /core/java/android/window/SplashScreenView.java | |
| parent | fdf0378b8d22e2d8a3f08c6026ec92d5d2187ebf (diff) | |
Instrument jank of splash screen AVD and exit animation
Add jank instrument support for splash screen avd and exit animation.
Bug: 195736656
Test: see trace in comment
Change-Id: I1fdb9e14145bcf519eea99e440de74238e3c765c
Diffstat (limited to 'core/java/android/window/SplashScreenView.java')
| -rw-r--r-- | core/java/android/window/SplashScreenView.java | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/core/java/android/window/SplashScreenView.java b/core/java/android/window/SplashScreenView.java index f748d4bc121d..f04155d112d4 100644 --- a/core/java/android/window/SplashScreenView.java +++ b/core/java/android/window/SplashScreenView.java @@ -20,6 +20,10 @@ import static android.view.WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACK import static android.view.WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION; import static android.view.WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS; +import static com.android.internal.jank.InteractionJankMonitor.CUJ_SPLASHSCREEN_AVD; + +import android.animation.Animator; +import android.animation.AnimatorListenerAdapter; import android.annotation.ColorInt; import android.annotation.NonNull; import android.annotation.Nullable; @@ -54,6 +58,7 @@ import android.widget.FrameLayout; import android.widget.ImageView; import com.android.internal.R; +import com.android.internal.jank.InteractionJankMonitor; import com.android.internal.policy.DecorView; import com.android.internal.util.ContrastColorUtil; @@ -487,6 +492,23 @@ public final class SplashScreenView extends FrameLayout { } IconAnimateListener aniDrawable = (IconAnimateListener) iconDrawable; aniDrawable.prepareAnimate(duration, this::animationStartCallback); + aniDrawable.setAnimationJankMonitoring(new AnimatorListenerAdapter() { + @Override + public void onAnimationCancel(Animator animation) { + InteractionJankMonitor.getInstance().cancel(CUJ_SPLASHSCREEN_AVD); + } + + @Override + public void onAnimationEnd(Animator animation) { + InteractionJankMonitor.getInstance().end(CUJ_SPLASHSCREEN_AVD); + } + + @Override + public void onAnimationStart(Animator animation) { + InteractionJankMonitor.getInstance().begin( + SplashScreenView.this, CUJ_SPLASHSCREEN_AVD); + } + }); } private void animationStartCallback() { @@ -669,6 +691,12 @@ public final class SplashScreenView extends FrameLayout { * Stop animation. */ void stopAnimation(); + + /** + * Provides a chance to start interaction jank monitoring in avd animation. + * @param listener a listener to start jank monitoring + */ + default void setAnimationJankMonitoring(AnimatorListenerAdapter listener) {} } /** |
