diff options
| -rw-r--r-- | services/core/java/com/android/server/wm/ActivityStarter.java | 3 | ||||
| -rw-r--r-- | services/core/java/com/android/server/wm/Task.java | 11 |
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. */ |