Merge "DO NOT MERGE - [ActivityManager] Ensure consistency behavior when a background activity brings another existed activity to front."

This commit is contained in:
Craig Mautner
2014-03-28 20:23:34 +00:00
committed by Gerrit Code Review

View File

@@ -1425,6 +1425,7 @@ public final class ActivityStackSupervisor {
r.resultTo = null; r.resultTo = null;
} }
boolean switchStackFromBg = false;
boolean addingToTask = false; boolean addingToTask = false;
boolean movedHome = false; boolean movedHome = false;
TaskRecord reuseTask = null; TaskRecord reuseTask = null;
@@ -1486,6 +1487,11 @@ public final class ActivityStackSupervisor {
} }
options = null; options = null;
} }
} else {
switchStackFromBg = lastStack != targetStack;
if (DEBUG_TASKS) Slog.d(TAG, "Caller " + sourceRecord
+ " is not top task, it may not move " + r
+ " to front, switchStack=" + switchStackFromBg);
} }
// If the caller has requested that the target task be // If the caller has requested that the target task be
// reset, then do so. // reset, then do so.
@@ -1593,6 +1599,10 @@ public final class ActivityStackSupervisor {
// don't use that intent!) And for paranoia, make // don't use that intent!) And for paranoia, make
// sure we have correctly resumed the top activity. // sure we have correctly resumed the top activity.
if (doResume) { if (doResume) {
if (switchStackFromBg) {
moveHomeStack(lastStack.isHomeStack());
targetStack = lastStack;
}
targetStack.resumeTopActivityLocked(null, options); targetStack.resumeTopActivityLocked(null, options);
} else { } else {
ActivityOptions.abort(options); ActivityOptions.abort(options);