OSDN Git Service

[ActivityManager] Fix IndexOutOfBoundsException
authorlouis_chang <louis_chang@htc.com>
Tue, 27 Oct 2015 02:45:53 +0000 (10:45 +0800)
committerlouis_chang <louis_chang@htc.com>
Tue, 27 Oct 2015 02:45:53 +0000 (10:45 +0800)
Symptom:
The stack was deleted during cleanup, so the stack
list size has reduced by one and cause this issue.

IndexOutOfBoundsException: Invalid index 1, size is 1

Change-Id: Ic6722aed98a0ad789b331d00e89cb74bf3b36d4c

services/core/java/com/android/server/am/ActivityStackSupervisor.java

index af6f185..1195e83 100644 (file)
@@ -2670,8 +2670,7 @@ public final class ActivityStackSupervisor implements DisplayListener {
         boolean didSomething = false;
         for (int displayNdx = mActivityDisplays.size() - 1; displayNdx >= 0; --displayNdx) {
             final ArrayList<ActivityStack> stacks = mActivityDisplays.valueAt(displayNdx).mStacks;
-            final int numStacks = stacks.size();
-            for (int stackNdx = 0; stackNdx < numStacks; ++stackNdx) {
+            for (int stackNdx = stacks.size() - 1; stackNdx >= 0; --stackNdx) {
                 final ActivityStack stack = stacks.get(stackNdx);
                 if (stack.finishDisabledPackageActivitiesLocked(
                         packageName, filterByClasses, doit, evenPersistent, userId)) {