diff options
| author | 2018-09-11 10:00:20 -0700 | |
|---|---|---|
| committer | 2018-09-11 10:00:20 -0700 | |
| commit | adc5c93c17342aaf4c96bf40a9e374ecef90d6b5 (patch) | |
| tree | 38d9ff32b0e2ab0a7c3eabad6363a235c1f169f5 | |
| parent | 5c6894a85b254cf8c484173054da7e70bac8a5d8 (diff) | |
| parent | 397fdf0ff45244a282bc38e97c55826eefbf3932 (diff) | |
Merge "Reset launch start times when removing a process"
am: 397fdf0ff4
Change-Id: I5b5451be77f6e066f57454a10bc205b75f23daf4
| -rw-r--r-- | services/core/java/com/android/server/am/ActivityManagerService.java | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index 31fb3679ecea..94c90dc5adc0 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -5889,6 +5889,7 @@ public class ActivityManagerService extends IActivityManager.Stub private final void handleAppDiedLocked(ProcessRecord app, boolean restarting, boolean allowRestart) { int pid = app.pid; + final boolean clearLaunchStartTime = !restarting && app.removed && app.foregroundActivities; boolean kept = cleanUpApplicationRecordLocked(app, restarting, allowRestart, -1, false /*replacingPid*/); if (!kept && !restarting) { @@ -5929,6 +5930,19 @@ public class ActivityManagerService extends IActivityManager.Stub } finally { mWindowManager.continueSurfaceLayout(); } + + // TODO (b/67683350) + // When an app process is removed, activities from the process may be relaunched. In the + // case of forceStopPackageLocked the activities are finished before any window is drawn, + // and the launch time is not cleared. This will be incorrectly used to calculate launch + // time for the next launched activity launched in the same windowing mode. + if (clearLaunchStartTime) { + final LaunchTimeTracker.Entry entry = mStackSupervisor + .getLaunchTimeTracker().getEntry(mStackSupervisor.getWindowingMode()); + if (entry != null) { + entry.mLaunchStartTime = 0; + } + } } private final int getLRURecordIndexForAppLocked(IApplicationThread thread) { |