diff options
| author | 2020-01-07 17:20:37 +0800 | |
|---|---|---|
| committer | 2020-01-16 17:49:16 +0800 | |
| commit | 7d6783c37f00dd9dd99bd003a29b77b38df33858 (patch) | |
| tree | f84a51c0cc481a0e85a685b8b6ee7249d449d59f | |
| parent | b69a2c9cd15e8e2b8e9aefbc622d3634b50463ea (diff) | |
Avoid creating new instance on top when started for result in some cases
A new activity instance was created when the task top activity with launch
mode singleTop started itself via startActivityForResult.
Also an activity with launchMode singleInstance was created and added on
top of another activity if it was started via startActivityForResult().
Bug: 122967919
Bug: 122968776
Test: atest IntentTests
Change-Id: I923a0d9aae62dc44c796b7f1c9327dd35dd658bb
| -rw-r--r-- | services/core/java/com/android/server/wm/ActivityStarter.java | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/services/core/java/com/android/server/wm/ActivityStarter.java b/services/core/java/com/android/server/wm/ActivityStarter.java index 6587226b14d7..40aecf544694 100644 --- a/services/core/java/com/android/server/wm/ActivityStarter.java +++ b/services/core/java/com/android/server/wm/ActivityStarter.java @@ -1804,12 +1804,12 @@ class ActivityStarter { */ private int deliverToCurrentTopIfNeeded(ActivityStack topStack) { 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)) + || isLaunchModeOneOf(LAUNCH_SINGLE_TOP, LAUNCH_SINGLE_TASK)) // This allows home activity to automatically launch on secondary display when // display added, if home was the top activity on default display, instead of // sending new intent to the home activity on default display. @@ -2040,8 +2040,6 @@ class ActivityStarter { && !isLaunchModeOneOf(LAUNCH_SINGLE_TASK, LAUNCH_SINGLE_INSTANCE) && (mLaunchFlags & FLAG_ACTIVITY_NEW_DOCUMENT) != 0; - sendNewTaskResultRequestIfNeeded(); - if ((mLaunchFlags & FLAG_ACTIVITY_NEW_DOCUMENT) != 0 && r.resultTo == null) { mLaunchFlags |= FLAG_ACTIVITY_NEW_TASK; } @@ -2223,6 +2221,8 @@ class ActivityStarter { mLaunchFlags |= FLAG_ACTIVITY_NEW_TASK; } } + + sendNewTaskResultRequestIfNeeded(); } private void computeSourceStack() { |