summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Vishnu Nair <vishnun@google.com> 2018-09-04 19:49:57 -0700
committer Vishnu Nair <vishnun@google.com> 2018-09-05 10:27:21 -0700
commit9372683dd2b6ceafee4714770b51e67066e3d8bc (patch)
tree81d7d0202c584789031696267e6fd3cd6985039a
parent7daaaad74a29eca0e2a56b29fe55e2f615b05415 (diff)
DO NOT MERGE: Reset launch start times when removing a process
When removing an exiting process that is running foreground activities, clear the launch times for the current windowing mode. 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. Bug: 80084651 Test: adb shell am start -W com.amazon.mShop.android.shopping/com.amazon.mShop.home.HomeActivity && sleep 1 && adb shell am force-stop com.amazon.mShop.android.shopping Change-Id: I2c4f0716c922baa1ad209b4ea1fa7ce366e0e108
-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 c5b8b950d456..2f1021a3dd9b 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) {