summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Louis Chang <louischang@google.com> 2020-01-07 17:20:37 +0800
committer Louis Chang <louischang@google.com> 2020-01-16 17:49:16 +0800
commit7d6783c37f00dd9dd99bd003a29b77b38df33858 (patch)
treef84a51c0cc481a0e85a685b8b6ee7249d449d59f
parentb69a2c9cd15e8e2b8e9aefbc622d3634b50463ea (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.java8
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() {