summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/wm/ActivityStarter.java19
1 files changed, 11 insertions, 8 deletions
diff --git a/services/core/java/com/android/server/wm/ActivityStarter.java b/services/core/java/com/android/server/wm/ActivityStarter.java
index 326251469ce7..b793b39f3ac9 100644
--- a/services/core/java/com/android/server/wm/ActivityStarter.java
+++ b/services/core/java/com/android/server/wm/ActivityStarter.java
@@ -1909,14 +1909,17 @@ class ActivityStarter {
mAddingToTask = true;
}
} else if (mStartActivity.mActivityComponent.equals(targetTask.realActivity)) {
- // In this case the top activity on the task is the same as the one being launched,
- // so we take that as a request to bring the task to the foreground. If the top
- // activity in the task is the root activity, deliver this new intent to it if it
- // desires.
- if (((mLaunchFlags & FLAG_ACTIVITY_SINGLE_TOP) != 0
- || LAUNCH_SINGLE_TOP == mLaunchMode)
- && targetTaskTop.mActivityComponent.equals(
- mStartActivity.mActivityComponent) && mStartActivity.resultTo == null) {
+ if (targetTask == mInTask) {
+ // In this case we are bringing up an existing activity from a recent task. We
+ // don't need to add a new activity instance on top.
+ } else if (((mLaunchFlags & FLAG_ACTIVITY_SINGLE_TOP) != 0
+ || LAUNCH_SINGLE_TOP == mLaunchMode)
+ && targetTaskTop.mActivityComponent.equals(mStartActivity.mActivityComponent)
+ && mStartActivity.resultTo == null) {
+ // In this case the top activity on the task is the same as the one being launched,
+ // so we take that as a request to bring the task to the foreground. If the top
+ // activity in the task is the root activity, deliver this new intent to it if it
+ // desires.
if (targetTaskTop.isRootOfTask()) {
targetTaskTop.getTaskRecord().setIntent(mStartActivity);
}