diff options
Diffstat (limited to 'services/java')
-rwxr-xr-x[-rw-r--r--] | services/java/com/android/server/am/ActivityStackSupervisor.java | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/services/java/com/android/server/am/ActivityStackSupervisor.java b/services/java/com/android/server/am/ActivityStackSupervisor.java index 483b4a0..93de0a6 100644..100755 --- a/services/java/com/android/server/am/ActivityStackSupervisor.java +++ b/services/java/com/android/server/am/ActivityStackSupervisor.java @@ -1425,6 +1425,7 @@ public final class ActivityStackSupervisor { r.resultTo = null; } + boolean switchStackFromBg = false; boolean addingToTask = false; boolean movedHome = false; TaskRecord reuseTask = null; @@ -1486,6 +1487,11 @@ public final class ActivityStackSupervisor { } 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 // reset, then do so. @@ -1593,6 +1599,10 @@ public final class ActivityStackSupervisor { // don't use that intent!) And for paranoia, make // sure we have correctly resumed the top activity. if (doResume) { + if (switchStackFromBg) { + moveHomeStack(lastStack.isHomeStack()); + targetStack = lastStack; + } targetStack.resumeTopActivityLocked(null, options); } else { ActivityOptions.abort(options); |