From 7f13ed37fd2a0533fa7c5e330519decd89fdc1d5 Mon Sep 17 00:00:00 2001 From: Craig Mautner Date: Mon, 28 Jul 2014 14:00:35 -0700 Subject: Remove PendingActivityLaunches based on stack. Was previously removing by trying to match activities, but the activity being matched would not have been in the stack yet. Since it doesn't get added to the stack when it goes into the list of pending activities. By removing all pending activities associated with the stack we clean up all such pending activities. Fixes bug 16045752. Change-Id: I6b5981ffcce674139837b06362e573299bbc9e52 --- services/core/java/com/android/server/am/ActivityStack.java | 1 - .../core/java/com/android/server/am/ActivityStackSupervisor.java | 5 +++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/services/core/java/com/android/server/am/ActivityStack.java b/services/core/java/com/android/server/am/ActivityStack.java index 224946ce89c0..b2c0f093b6d9 100755 --- a/services/core/java/com/android/server/am/ActivityStack.java +++ b/services/core/java/com/android/server/am/ActivityStack.java @@ -2688,7 +2688,6 @@ final class ActivityStack { // down to the max limit while they are still waiting to finish. mStackSupervisor.mFinishingActivities.remove(r); mStackSupervisor.mWaitingVisibleActivities.remove(r); - mStackSupervisor.removePendingActivityLaunchesLocked(r); // Remove any pending results. if (r.finishing && r.pendingResults != null) { diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java index cdcccccb3c33..91915c175113 100644 --- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java +++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java @@ -1859,10 +1859,10 @@ public final class ActivityStackSupervisor implements DisplayListener { } } - void removePendingActivityLaunchesLocked(ActivityRecord r) { + void removePendingActivityLaunchesLocked(ActivityStack stack) { for (int palNdx = mPendingActivityLaunches.size() - 1; palNdx >= 0; --palNdx) { PendingActivityLaunch pal = mPendingActivityLaunches.get(palNdx); - if (pal.r == r) { + if (pal.stack == stack) { mPendingActivityLaunches.remove(palNdx); } } @@ -3099,6 +3099,7 @@ public final class ActivityStackSupervisor implements DisplayListener { long origId = Binder.clearCallingIdentity(); try { mStack.finishAllActivitiesLocked(false); + removePendingActivityLaunchesLocked(mStack); } finally { Binder.restoreCallingIdentity(origId); } -- cgit v1.2.3-59-g8ed1b