diff options
| -rw-r--r-- | services/core/java/com/android/server/am/ActivityStarter.java | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/am/ActivityStarter.java b/services/core/java/com/android/server/am/ActivityStarter.java index 4bd06b76e92e..2a1e0b307b7e 100644 --- a/services/core/java/com/android/server/am/ActivityStarter.java +++ b/services/core/java/com/android/server/am/ActivityStarter.java @@ -1453,6 +1453,12 @@ class ActivityStarter { return intentActivity; } + /** + * Figure out which task and activity to bring to front when we have found an existing matching + * activity record in history. May also clear the task if needed. + * @param intentActivity Existing matching activity. + * @return {@link ActivityRecord} brought to front. + */ private ActivityRecord setTargetStackAndMoveToFrontIfNeeded(ActivityRecord intentActivity) { mTargetStack = intentActivity.getStack(); mTargetStack.mLastPausedActivity = null; @@ -1514,6 +1520,14 @@ class ActivityStarter { "bringToFrontInsteadOfAdjacentLaunch"); } mMovedToFront = true; + } else if (launchStack.mDisplayId != mTargetStack.mDisplayId) { + // Target and computed stacks are on different displays and we've + // found a matching task - move the existing instance to that display and + // move it to front. + intentActivity.task.reparent(launchStack.mStackId, ON_TOP, + REPARENT_MOVE_STACK_TO_FRONT, ANIMATE, DEFER_RESUME, + "reparentToDisplay"); + mMovedToFront = true; } mOptions = null; |