summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Wale Ogunwale <ogunwale@google.com> 2018-09-06 12:23:42 -0700
committer android-build-merger <android-build-merger@google.com> 2018-09-06 12:23:42 -0700
commit0dc4a13ceea31aa3ac9811b9880c17ab4499be84 (patch)
treeedfdeda13a3693b0166fb9c3dfce0208e9249e1f
parent1221c49412cb65be1c2ae77b80f1fedbe6656c78 (diff)
parent1932d101fa1fbf1c0ee6a3933bfca976771addc1 (diff)
Merge "DO NOT MERGE: Reset launch start times when removing a process" into pi-dev
am: 1932d101fa Change-Id: I379de0b05e3f9ba2b000cdeab0df6330233de7cc
-rw-r--r--services/core/java/com/android/server/am/ActivityManagerService.java14
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 904d8f058bb5..bc5c5b6840a0 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();
}
+
+ // Hack for pi
+ // 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) {