summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/wm/ActivityStarter.java3
-rw-r--r--services/core/java/com/android/server/wm/Task.java11
2 files changed, 8 insertions, 6 deletions
diff --git a/services/core/java/com/android/server/wm/ActivityStarter.java b/services/core/java/com/android/server/wm/ActivityStarter.java
index fedbe5bcd862..fc3320e76c2a 100644
--- a/services/core/java/com/android/server/wm/ActivityStarter.java
+++ b/services/core/java/com/android/server/wm/ActivityStarter.java
@@ -2379,7 +2379,8 @@ class ActivityStarter {
// already be running somewhere in the history, and we want to shuffle it to
// the front of the root task if so.
final ActivityRecord act =
- targetTask.findActivityInHistory(mStartActivity.mActivityComponent);
+ targetTask.findActivityInHistory(mStartActivity.mActivityComponent,
+ mStartActivity.mUserId);
if (act != null) {
final Task task = act.getTask();
task.moveActivityToFrontLocked(act);
diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java
index 342ae57af018..9186eb2abea6 100644
--- a/services/core/java/com/android/server/wm/Task.java
+++ b/services/core/java/com/android/server/wm/Task.java
@@ -1640,7 +1640,7 @@ class Task extends TaskFragment {
* or {@code null} if none was found.
*/
private ActivityRecord clearTopActivities(ActivityRecord newR, int launchFlags) {
- final ActivityRecord r = findActivityInHistory(newR.mActivityComponent);
+ final ActivityRecord r = findActivityInHistory(newR.mActivityComponent, newR.mUserId);
if (r == null) return null;
final PooledPredicate f = PooledLambda.obtainPredicate(Task::finishActivityAbove,
@@ -1756,17 +1756,18 @@ class Task extends TaskFragment {
* Find the activity in the history task within the given task. Returns
* the index within the history at which it's found, or < 0 if not found.
*/
- ActivityRecord findActivityInHistory(ComponentName component) {
+ ActivityRecord findActivityInHistory(ComponentName component, int userId) {
final PooledPredicate p = PooledLambda.obtainPredicate(Task::matchesActivityInHistory,
- PooledLambda.__(ActivityRecord.class), component);
+ PooledLambda.__(ActivityRecord.class), component, userId);
final ActivityRecord r = getActivity(p);
p.recycle();
return r;
}
private static boolean matchesActivityInHistory(
- ActivityRecord r, ComponentName activityComponent) {
- return !r.finishing && r.mActivityComponent.equals(activityComponent);
+ ActivityRecord r, ComponentName activityComponent, int userId) {
+ return !r.finishing && r.mActivityComponent.equals(activityComponent)
+ && r.mUserId == userId;
}
/** Updates the last task description values. */