Merge "[wm] add incremental indicators for app start metrics" into sc-dev

This commit is contained in:
TreeHugger Robot
2021-05-18 19:59:33 +00:00
committed by Android (Google) Code Review

View File

@@ -76,6 +76,7 @@ import android.app.WindowConfiguration.WindowingMode;
import android.content.ComponentName; import android.content.ComponentName;
import android.content.Intent; import android.content.Intent;
import android.content.pm.ApplicationInfo; import android.content.pm.ApplicationInfo;
import android.content.pm.IncrementalStatesInfo;
import android.content.pm.dex.ArtManagerInternal; import android.content.pm.dex.ArtManagerInternal;
import android.content.pm.dex.PackageOptimizationInfo; import android.content.pm.dex.PackageOptimizationInfo;
import android.metrics.LogMaker; import android.metrics.LogMaker;
@@ -84,6 +85,7 @@ import android.os.Handler;
import android.os.Looper; import android.os.Looper;
import android.os.SystemClock; import android.os.SystemClock;
import android.os.Trace; import android.os.Trace;
import android.os.incremental.IncrementalManager;
import android.util.ArrayMap; import android.util.ArrayMap;
import android.util.EventLog; import android.util.EventLog;
import android.util.Log; import android.util.Log;
@@ -948,6 +950,14 @@ class ActivityMetricsLogger {
builder.addTaggedData(PACKAGE_OPTIMIZATION_COMPILATION_FILTER, builder.addTaggedData(PACKAGE_OPTIMIZATION_COMPILATION_FILTER,
packageOptimizationInfo.getCompilationFilter()); packageOptimizationInfo.getCompilationFilter());
mMetricsLogger.write(builder); mMetricsLogger.write(builder);
// Incremental info
boolean isIncremental = false, isLoading = false;
final String codePath = info.applicationInfo.getCodePath();
if (codePath != null && IncrementalManager.isIncrementalPath(codePath)) {
isIncremental = true;
isLoading = isIncrementalLoading(info.packageName, info.userId);
}
FrameworkStatsLog.write( FrameworkStatsLog.write(
FrameworkStatsLog.APP_START_OCCURRED, FrameworkStatsLog.APP_START_OCCURRED,
info.applicationInfo.uid, info.applicationInfo.uid,
@@ -967,7 +977,10 @@ class ActivityMetricsLogger {
packageOptimizationInfo.getCompilationFilter(), packageOptimizationInfo.getCompilationFilter(),
info.sourceType, info.sourceType,
info.sourceEventDelayMs, info.sourceEventDelayMs,
isHibernating); isHibernating,
isIncremental,
isLoading,
info.launchedActivityName.hashCode());
if (DEBUG_METRICS) { if (DEBUG_METRICS) {
Slog.i(TAG, String.format("APP_START_OCCURRED(%s, %s, %s, %s, %s)", Slog.i(TAG, String.format("APP_START_OCCURRED(%s, %s, %s, %s, %s)",
@@ -982,6 +995,12 @@ class ActivityMetricsLogger {
logAppStartMemoryStateCapture(info); logAppStartMemoryStateCapture(info);
} }
private boolean isIncrementalLoading(String packageName, int userId) {
final IncrementalStatesInfo info = mSupervisor.mService.getPackageManagerInternalLocked()
.getIncrementalStatesInfo(packageName, 0 /* filterCallingUid */, userId);
return info != null && info.isLoading();
}
private void logAppDisplayed(TransitionInfoSnapshot info) { private void logAppDisplayed(TransitionInfoSnapshot info) {
if (info.type != TYPE_TRANSITION_WARM_LAUNCH && info.type != TYPE_TRANSITION_COLD_LAUNCH) { if (info.type != TYPE_TRANSITION_WARM_LAUNCH && info.type != TYPE_TRANSITION_COLD_LAUNCH) {
return; return;
@@ -1063,6 +1082,14 @@ class ActivityMetricsLogger {
mMetricsLogger.write(builder); mMetricsLogger.write(builder);
final PackageOptimizationInfo packageOptimizationInfo = final PackageOptimizationInfo packageOptimizationInfo =
infoSnapshot.getPackageOptimizationInfo(getArtManagerInternal()); infoSnapshot.getPackageOptimizationInfo(getArtManagerInternal());
// Incremental info
boolean isIncremental = false, isLoading = false;
final String codePath = info.mLastLaunchedActivity.info.applicationInfo.getCodePath();
if (codePath != null && IncrementalManager.isIncrementalPath(codePath)) {
isIncremental = true;
isLoading = isIncrementalLoading(info.mLastLaunchedActivity.packageName,
info.mLastLaunchedActivity.mUserId);
}
FrameworkStatsLog.write( FrameworkStatsLog.write(
FrameworkStatsLog.APP_START_FULLY_DRAWN, FrameworkStatsLog.APP_START_FULLY_DRAWN,
info.mLastLaunchedActivity.info.applicationInfo.uid, info.mLastLaunchedActivity.info.applicationInfo.uid,
@@ -1076,7 +1103,10 @@ class ActivityMetricsLogger {
packageOptimizationInfo.getCompilationReason(), packageOptimizationInfo.getCompilationReason(),
packageOptimizationInfo.getCompilationFilter(), packageOptimizationInfo.getCompilationFilter(),
info.mSourceType, info.mSourceType,
info.mSourceEventDelayMs); info.mSourceEventDelayMs,
isIncremental,
isLoading,
info.mLastLaunchedActivity.info.name.hashCode());
// Ends the trace started at the beginning of this function. This is located here to allow // Ends the trace started at the beginning of this function. This is located here to allow
// the trace slice to have a noticable duration. // the trace slice to have a noticable duration.