diff options
| -rw-r--r-- | services/core/java/com/android/server/am/ActivityManagerService.java | 2 | ||||
| -rw-r--r-- | services/core/java/com/android/server/am/ActivityStarter.java | 14 |
2 files changed, 16 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 c78960dae9ab..e46fba45c789 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -6098,6 +6098,8 @@ public final class ActivityManagerService extends ActivityManagerNative ProcessList.INVALID_ADJ, callerWillRestart, true, doit, evenPersistent, packageName == null ? ("stop user " + userId) : ("stop " + packageName)); + didSomething |= mActivityStarter.clearPendingActivityLaunchesLocked(packageName); + if (mStackSupervisor.finishDisabledPackageActivitiesLocked( packageName, null, doit, evenPersistent, userId)) { if (!doit) { diff --git a/services/core/java/com/android/server/am/ActivityStarter.java b/services/core/java/com/android/server/am/ActivityStarter.java index 7b3f65a728bf..85fa139906dd 100644 --- a/services/core/java/com/android/server/am/ActivityStarter.java +++ b/services/core/java/com/android/server/am/ActivityStarter.java @@ -2006,4 +2006,18 @@ class ActivityStarter { } } } + + boolean clearPendingActivityLaunchesLocked(String packageName) { + boolean didSomething = false; + + for (int palNdx = mPendingActivityLaunches.size() - 1; palNdx >= 0; --palNdx) { + PendingActivityLaunch pal = mPendingActivityLaunches.get(palNdx); + ActivityRecord r = pal.r; + if (r != null && r.packageName.equals(packageName)) { + mPendingActivityLaunches.remove(palNdx); + didSomething = true; + } + } + return didSomething; + } } |