summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Andrii Kulian <akulian@google.com> 2016-08-29 18:30:06 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2016-08-29 18:30:10 +0000
commit128a4419e92ad3bcbbbf29d4ab1550220799b59c (patch)
tree5fd776538ebd48a7688207e7b619f458cbc947ba
parent2b4e612b1069fd60d58e06c9a37e7ae471d8976f (diff)
parent620040db3ff81a8318dfaee64dee4dae94c428fa (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.java9
-rw-r--r--services/core/java/com/android/server/am/ActivityStackSupervisor.java2
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);