Correctly finish activity in non-focused stack am: 7318d63ba6

am: 764045c0cc

Change-Id: Ia20347a7ea671b099ca908baea6daf6d5021dd96
This commit is contained in:
Andrii Kulian
2016-07-27 22:55:02 +00:00
committed by android-build-merger
2 changed files with 9 additions and 2 deletions

View File

@@ -3562,11 +3562,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();
}

View File

@@ -1051,7 +1051,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);