diff options
| author | 2016-08-29 18:30:06 +0000 | |
|---|---|---|
| committer | 2016-08-29 18:30:10 +0000 | |
| commit | 128a4419e92ad3bcbbbf29d4ab1550220799b59c (patch) | |
| tree | 5fd776538ebd48a7688207e7b619f458cbc947ba | |
| parent | 2b4e612b1069fd60d58e06c9a37e7ae471d8976f (diff) | |
| parent | 620040db3ff81a8318dfaee64dee4dae94c428fa (diff) | |
Merge "DO NOT MERGE -- Correctly finish activity in non-focused stack" into nyc-dev
| -rw-r--r-- | services/core/java/com/android/server/am/ActivityStack.java | 9 | ||||
| -rw-r--r-- | services/core/java/com/android/server/am/ActivityStackSupervisor.java | 2 |
2 files changed, 9 insertions, 2 deletions
diff --git a/services/core/java/com/android/server/am/ActivityStack.java b/services/core/java/com/android/server/am/ActivityStack.java index 4ead64b6915b..994200953eb7 100644 --- a/services/core/java/com/android/server/am/ActivityStack.java +++ b/services/core/java/com/android/server/am/ActivityStack.java @@ -3545,11 +3545,18 @@ final class ActivityStack { if (mode == FINISH_IMMEDIATELY || (prevState == ActivityState.PAUSED - && (mode == FINISH_AFTER_PAUSE || mStackId == PINNED_STACK_ID)) + && (mode == FINISH_AFTER_PAUSE || mode == FINISH_AFTER_VISIBLE + || mStackId == PINNED_STACK_ID)) || prevState == ActivityState.STOPPED || prevState == ActivityState.INITIALIZING) { r.makeFinishingLocked(); boolean activityRemoved = destroyActivityLocked(r, true, "finish-imm"); + + if (prevState == ActivityState.PAUSED && mode == FINISH_AFTER_VISIBLE) { + // Finishing activity that was in paused state - this can happen if it was in + // not currently focused stack. Need to make something visible in its place. + mStackSupervisor.ensureActivitiesVisibleLocked(null, 0, !PRESERVE_WINDOWS); + } if (activityRemoved) { mStackSupervisor.resumeFocusedStackTopActivityLocked(); } diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java index 36207c48794f..06e5ea20c2e0 100644 --- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java +++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java @@ -1049,7 +1049,7 @@ public final class ActivityStackSupervisor implements DisplayListener { return r; } - // Return to the home stack. + // Look in other non-focused and non-home stacks. final ArrayList<ActivityStack> stacks = mHomeStack.mStacks; for (int stackNdx = stacks.size() - 1; stackNdx >= 0; --stackNdx) { final ActivityStack stack = stacks.get(stackNdx); |