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.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.
|
||||||
|
|||||||
Reference in New Issue
Block a user