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:
Riddle Hsu
2021-06-24 00:50:51 +08:00
parent 184c61395e
commit 91cc2b2597

View File

@@ -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;
}