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
This commit is contained in:
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user