summaryrefslogtreecommitdiffstats
path: root/services/java/com/android/server
diff options
context:
space:
mode:
Diffstat (limited to 'services/java/com/android/server')
-rwxr-xr-x[-rw-r--r--]services/java/com/android/server/am/ActivityStackSupervisor.java10
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);