Merge "[wm] add incremental indicators for app start metrics" into sc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
2fd8a28e9a
@@ -76,6 +76,7 @@ import android.app.WindowConfiguration.WindowingMode;
|
||||
import android.content.ComponentName;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.ApplicationInfo;
|
||||
import android.content.pm.IncrementalStatesInfo;
|
||||
import android.content.pm.dex.ArtManagerInternal;
|
||||
import android.content.pm.dex.PackageOptimizationInfo;
|
||||
import android.metrics.LogMaker;
|
||||
@@ -84,6 +85,7 @@ import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import android.os.SystemClock;
|
||||
import android.os.Trace;
|
||||
import android.os.incremental.IncrementalManager;
|
||||
import android.util.ArrayMap;
|
||||
import android.util.EventLog;
|
||||
import android.util.Log;
|
||||
@@ -948,6 +950,14 @@ class ActivityMetricsLogger {
|
||||
builder.addTaggedData(PACKAGE_OPTIMIZATION_COMPILATION_FILTER,
|
||||
packageOptimizationInfo.getCompilationFilter());
|
||||
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.APP_START_OCCURRED,
|
||||
info.applicationInfo.uid,
|
||||
@@ -967,7 +977,10 @@ class ActivityMetricsLogger {
|
||||
packageOptimizationInfo.getCompilationFilter(),
|
||||
info.sourceType,
|
||||
info.sourceEventDelayMs,
|
||||
isHibernating);
|
||||
isHibernating,
|
||||
isIncremental,
|
||||
isLoading,
|
||||
info.launchedActivityName.hashCode());
|
||||
|
||||
if (DEBUG_METRICS) {
|
||||
Slog.i(TAG, String.format("APP_START_OCCURRED(%s, %s, %s, %s, %s)",
|
||||
@@ -982,6 +995,12 @@ class ActivityMetricsLogger {
|
||||
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) {
|
||||
if (info.type != TYPE_TRANSITION_WARM_LAUNCH && info.type != TYPE_TRANSITION_COLD_LAUNCH) {
|
||||
return;
|
||||
@@ -1063,6 +1082,14 @@ class ActivityMetricsLogger {
|
||||
mMetricsLogger.write(builder);
|
||||
final PackageOptimizationInfo packageOptimizationInfo =
|
||||
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.APP_START_FULLY_DRAWN,
|
||||
info.mLastLaunchedActivity.info.applicationInfo.uid,
|
||||
@@ -1076,7 +1103,10 @@ class ActivityMetricsLogger {
|
||||
packageOptimizationInfo.getCompilationReason(),
|
||||
packageOptimizationInfo.getCompilationFilter(),
|
||||
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
|
||||
// the trace slice to have a noticable duration.
|
||||
|
||||
Reference in New Issue
Block a user