diff --git a/cmds/statsd/src/atoms.proto b/cmds/statsd/src/atoms.proto index 420454a7e2c925be82c94d35824268a7d697120b..972ce0c45556398d8ec76e19d67131b369f91f67 100644 --- a/cmds/statsd/src/atoms.proto +++ b/cmds/statsd/src/atoms.proto @@ -3831,6 +3831,12 @@ message AppStartFullyDrawn { // App startup time (until call to Activity#reportFullyDrawn()). optional int64 app_startup_time_millis = 6; + // The compiler filter used when when the package was optimized. + optional int32 package_optimization_compilation_filter = 7; + + // The reason why the package was optimized. + optional int32 package_optimization_compilation_reason = 8; + enum SourceType { UNAVAILABLE = 0; LAUNCHER = 1; @@ -3838,11 +3844,11 @@ message AppStartFullyDrawn { LOCKSCREEN = 3; } // The type of the startup source. - optional SourceType source_type = 7; + optional SourceType source_type = 9; // The time from the startup source to the beginning of handling the startup event. // -1 means not available. - optional int32 source_event_delay_millis = 8; + optional int32 source_event_delay_millis = 10; } /** diff --git a/services/core/java/com/android/server/wm/ActivityMetricsLogger.java b/services/core/java/com/android/server/wm/ActivityMetricsLogger.java index fb06a9cb588766df40c79d07132d6e2213dee551..9d08b1be8d36b0c19c67fac4587091026ca76640 100644 --- a/services/core/java/com/android/server/wm/ActivityMetricsLogger.java +++ b/services/core/java/com/android/server/wm/ActivityMetricsLogger.java @@ -397,6 +397,13 @@ class ActivityMetricsLogger { return -1; } } + + PackageOptimizationInfo getPackageOptimizationInfo(ArtManagerInternal artManagerInternal) { + return artManagerInternal == null || launchedActivityAppRecordRequiredAbi == null + ? PackageOptimizationInfo.createWithNoInfo() + : artManagerInternal.getPackageOptimizationInfo(applicationInfo, + launchedActivityAppRecordRequiredAbi, launchedActivityName); + } } ActivityMetricsLogger(ActivityStackSupervisor supervisor, Looper looper) { @@ -857,14 +864,8 @@ class ActivityMetricsLogger { info.bindApplicationDelayMs); } builder.addTaggedData(APP_TRANSITION_WINDOWS_DRAWN_DELAY_MS, info.windowsDrawnDelayMs); - final ArtManagerInternal artManagerInternal = getArtManagerInternal(); final PackageOptimizationInfo packageOptimizationInfo = - (artManagerInternal == null) || (info.launchedActivityAppRecordRequiredAbi == null) - ? PackageOptimizationInfo.createWithNoInfo() - : artManagerInternal.getPackageOptimizationInfo( - info.applicationInfo, - info.launchedActivityAppRecordRequiredAbi, - info.launchedActivityName); + info.getPackageOptimizationInfo(getArtManagerInternal()); builder.addTaggedData(PACKAGE_OPTIMIZATION_COMPILATION_REASON, packageOptimizationInfo.getCompilationReason()); builder.addTaggedData(PACKAGE_OPTIMIZATION_COMPILATION_FILTER, @@ -985,6 +986,8 @@ class ActivityMetricsLogger { builder.addTaggedData(APP_TRANSITION_PROCESS_RUNNING, info.mProcessRunning ? 1 : 0); mMetricsLogger.write(builder); + final PackageOptimizationInfo packageOptimizationInfo = + infoSnapshot.getPackageOptimizationInfo(getArtManagerInternal()); FrameworkStatsLog.write( FrameworkStatsLog.APP_START_FULLY_DRAWN, info.mLastLaunchedActivity.info.applicationInfo.uid, @@ -995,6 +998,8 @@ class ActivityMetricsLogger { info.mLastLaunchedActivity.info.name, info.mProcessRunning, startupTimeMs, + packageOptimizationInfo.getCompilationReason(), + packageOptimizationInfo.getCompilationFilter(), info.mSourceType, info.mSourceEventDelayMs);