Make singleTop activity be created with different display

If an instance of the activity already exists at the top of the
current task, the system routes the intent to that instance,
rather than creating a new instance of the activity. The top
task is examined from the global focused stack.

This CL checks the existing singleTop instance just from the
launching display.

Bug: 175098384
Test: atest ActivityStarterTests
      atest IntentTests
      atest MultiDisplayActivityLaunchTests
Change-Id: Ia0ffe6b8de6bcae738e273b998fd275e70d741cc
This commit is contained in:
Jeff Chang
2021-02-22 16:16:33 +08:00
parent c1d7c4d6ab
commit fd6a81c126

View File

@@ -1708,7 +1708,7 @@ class ActivityStarter {
// If the activity being launched is the same as the one currently at the top, then
// we need to check if it should only be launched once.
final Task topRootTask = mRootWindowContainer.getTopDisplayFocusedRootTask();
final Task topRootTask = mPreferredTaskDisplayArea.getFocusedRootTask();
if (topRootTask != null) {
startResult = deliverToCurrentTopIfNeeded(topRootTask, intentGrants);
if (startResult != START_SUCCESS) {