Move activity to display on launch
When an activity is launched with displayId specified and there
is an existing matching task on some other display - that task
should be move to the target display.
Bug: 34396961
Test: android.server.cts.ActivityManagerDisplayTests
Test: #testMoveToDisplayOnLaunch
Change-Id: I18b1f0de320039f4f1ac4e248f048a367f886d29
(cherry picked from commit ede131cce4)
This commit is contained in:
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user