diff options
| author | 2020-11-27 14:46:15 +0000 | |
|---|---|---|
| committer | 2020-11-27 14:46:15 +0000 | |
| commit | ff9809d801b3bd48d7464cdfb3e99eb15365bd84 (patch) | |
| tree | 789aab7502ed65befa29392fe5afcad4582d36f9 | |
| parent | 9065908890f4b5479849dc6622a3c9c60d4a94f6 (diff) | |
| parent | 59c156cffb589805f9b63ac3f0e70866a59b1f57 (diff) | |
Merge "Avoid creating new instance on top when started for result"
| -rw-r--r-- | services/core/java/com/android/server/wm/ActivityStarter.java | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/services/core/java/com/android/server/wm/ActivityStarter.java b/services/core/java/com/android/server/wm/ActivityStarter.java index 90cd682d6a8f..b88b54ef08f5 100644 --- a/services/core/java/com/android/server/wm/ActivityStarter.java +++ b/services/core/java/com/android/server/wm/ActivityStarter.java @@ -2031,12 +2031,12 @@ class ActivityStarter { */ private int deliverToCurrentTopIfNeeded(Task topStack, NeededUriGrants intentGrants) { final ActivityRecord top = topStack.topRunningNonDelayedActivityLocked(mNotTop); - final boolean dontStart = top != null && mStartActivity.resultTo == null + final boolean dontStart = top != null && top.mActivityComponent.equals(mStartActivity.mActivityComponent) && top.mUserId == mStartActivity.mUserId && top.attachedToProcess() && ((mLaunchFlags & FLAG_ACTIVITY_SINGLE_TOP) != 0 - || isLaunchModeOneOf(LAUNCH_SINGLE_TOP, LAUNCH_SINGLE_TASK)) + || LAUNCH_SINGLE_TOP == mLaunchMode) // This allows home activity to automatically launch on secondary task display area // when it was added, if home was the top activity on default task display area, // instead of sending new intent to the home activity on default display area. @@ -2057,6 +2057,13 @@ class ActivityStarter { return START_RETURN_INTENT_TO_CALLER; } + if (mStartActivity.resultTo != null) { + mStartActivity.resultTo.sendResult(INVALID_UID, mStartActivity.resultWho, + mStartActivity.requestCode, RESULT_CANCELED, + null /* data */, null /* dataGrants */); + mStartActivity.resultTo = null; + } + deliverNewIntent(top, intentGrants); // Don't use mStartActivity.task to show the toast. We're not starting a new activity but |