Separate trace of trampoline launch with different packages
The trace of app launch is "launching: $packageName". Previously,
if a caller uses its trampoline activity to launch another app,
the trace name will still show the package of caller. So now if
the packages are different, start a new trace for it.
Also update last transition info so it won't miss the fully-drawn
from the last launched activity.
Bug: 191765029
Test: Use Searchbox to launch other apps. The trace should
show two slices including launcher as trampoline and
the target app.
Change-Id: I3f2f19323089385d262a258f70b510f18e9943c3
This commit is contained in:
@@ -609,13 +609,27 @@ class ActivityMetricsLogger {
|
||||
return;
|
||||
}
|
||||
|
||||
// If the launched activity is started from an existing active transition, it will be put
|
||||
// into the transition info.
|
||||
if (info != null && info.canCoalesce(launchedActivity)) {
|
||||
// If we are already in an existing transition on the same display, only update the
|
||||
// activity name, but not the other attributes.
|
||||
if (DEBUG_METRICS) Slog.i(TAG, "notifyActivityLaunched consecutive launch");
|
||||
|
||||
if (DEBUG_METRICS) Slog.i(TAG, "notifyActivityLaunched update launched activity");
|
||||
final boolean crossPackage =
|
||||
!info.mLastLaunchedActivity.packageName.equals(launchedActivity.packageName);
|
||||
// The trace name uses package name so different packages should be separated.
|
||||
if (crossPackage) {
|
||||
stopLaunchTrace(info);
|
||||
}
|
||||
|
||||
mLastTransitionInfo.remove(info.mLastLaunchedActivity);
|
||||
// Coalesce multiple (trampoline) activities from a single sequence together.
|
||||
info.setLatestLaunchedActivity(launchedActivity);
|
||||
// Update the latest one so it can be found when reporting fully-drawn.
|
||||
mLastTransitionInfo.put(launchedActivity, info);
|
||||
|
||||
if (crossPackage) {
|
||||
startLaunchTrace(info);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user