Merge "DO NOT MERGE -- Fix finishing activity in non-focused stack" into nyc-dev

This commit is contained in:
TreeHugger Robot
2016-08-29 21:10:31 +00:00
committed by Android (Google) Code Review

View File

@@ -3542,19 +3542,22 @@ final class ActivityStack {
final ActivityState prevState = r.state; final ActivityState prevState = r.state;
if (DEBUG_STATES) Slog.v(TAG_STATES, "Moving to FINISHING: " + r); if (DEBUG_STATES) Slog.v(TAG_STATES, "Moving to FINISHING: " + r);
r.state = ActivityState.FINISHING; r.state = ActivityState.FINISHING;
final boolean finishingActivityInNonFocusedStack
= r.task.stack != mStackSupervisor.getFocusedStack()
&& prevState == ActivityState.PAUSED && mode == FINISH_AFTER_VISIBLE;
if (mode == FINISH_IMMEDIATELY if (mode == FINISH_IMMEDIATELY
|| (prevState == ActivityState.PAUSED || (prevState == ActivityState.PAUSED
&& (mode == FINISH_AFTER_PAUSE || mode == FINISH_AFTER_VISIBLE && (mode == FINISH_AFTER_PAUSE || mStackId == PINNED_STACK_ID))
|| mStackId == PINNED_STACK_ID)) || finishingActivityInNonFocusedStack
|| prevState == ActivityState.STOPPED || prevState == ActivityState.STOPPED
|| prevState == ActivityState.INITIALIZING) { || prevState == ActivityState.INITIALIZING) {
r.makeFinishingLocked(); r.makeFinishingLocked();
boolean activityRemoved = destroyActivityLocked(r, true, "finish-imm"); boolean activityRemoved = destroyActivityLocked(r, true, "finish-imm");
if (prevState == ActivityState.PAUSED && mode == FINISH_AFTER_VISIBLE) { if (finishingActivityInNonFocusedStack) {
// Finishing activity that was in paused state - this can happen if it was in // Finishing activity that was in paused state and it was in not currently focused
// not currently focused stack. Need to make something visible in its place. // stack, need to make something visible in its place.
mStackSupervisor.ensureActivitiesVisibleLocked(null, 0, !PRESERVE_WINDOWS); mStackSupervisor.ensureActivitiesVisibleLocked(null, 0, !PRESERVE_WINDOWS);
} }
if (activityRemoved) { if (activityRemoved) {