From d117271e6a3fc716bd84f35b6c26ae4dba452b13 Mon Sep 17 00:00:00 2001 From: Riddle Hsu Date: Tue, 4 May 2021 17:11:51 +0800 Subject: [PATCH] Use elapsed time as timestamp of activity launch To have the information of the relation to wall time. Bug: 187043447 Test: atest ActivityMetricsLoggerTests Change-Id: Ib9724b83698c5ada372cd5f0db5f4aa7a26e75b5 --- .../android/server/wm/ActivityMetricsLogger.java | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/services/core/java/com/android/server/wm/ActivityMetricsLogger.java b/services/core/java/com/android/server/wm/ActivityMetricsLogger.java index f6217bc2ffd24..49a0f9233acbd 100644 --- a/services/core/java/com/android/server/wm/ActivityMetricsLogger.java +++ b/services/core/java/com/android/server/wm/ActivityMetricsLogger.java @@ -906,9 +906,11 @@ class ActivityMetricsLogger { // This will avoid any races with other operations that modify the ActivityRecord. final TransitionInfoSnapshot infoSnapshot = new TransitionInfoSnapshot(info); if (info.isInterestingToLoggerAndObserver()) { + final long timestamp = info.mTransitionStartTimeNs; + final long uptime = info.mTransitionDeviceUptimeMs; + final int transitionDelay = info.mCurrentTransitionDelayMs; mLoggerHandler.post(() -> logAppTransition( - info.mTransitionDeviceUptimeMs, info.mCurrentTransitionDelayMs, - infoSnapshot, isHibernating)); + timestamp, uptime, transitionDelay, infoSnapshot, isHibernating)); } mLoggerHandler.post(() -> logAppDisplayed(infoSnapshot)); if (info.mPendingFullyDrawn != null) { @@ -919,8 +921,8 @@ class ActivityMetricsLogger { } // This gets called on another thread without holding the activity manager lock. - private void logAppTransition(long transitionDeviceUptimeMs, int currentTransitionDelayMs, - TransitionInfoSnapshot info, boolean isHibernating) { + private void logAppTransition(long transitionStartTimeNs, long transitionDeviceUptimeMs, + int currentTransitionDelayMs, TransitionInfoSnapshot info, boolean isHibernating) { final LogMaker builder = new LogMaker(APP_TRANSITION); builder.setPackageName(info.packageName); builder.setType(info.type); @@ -971,7 +973,7 @@ class ActivityMetricsLogger { info.launchedActivityName, info.launchedActivityLaunchedFromPackage, isInstantApp, - transitionDeviceUptimeMs, + 0 /* deprecated transitionDeviceUptimeMs */, info.reason, currentTransitionDelayMs, info.startingWindowDelayMs, @@ -985,7 +987,8 @@ class ActivityMetricsLogger { isHibernating, isIncremental, isLoading, - info.launchedActivityName.hashCode()); + info.launchedActivityName.hashCode(), + TimeUnit.NANOSECONDS.toMillis(transitionStartTimeNs)); if (DEBUG_METRICS) { Slog.i(TAG, String.format("APP_START_OCCURRED(%s, %s, %s, %s, %s)",