Loading services/core/java/com/android/server/am/ActivityStack.java +12 −3 Original line number Diff line number Diff line Loading @@ -825,7 +825,8 @@ final class ActivityStack { * is the same as the given activity. Returns null if no such activity * is found. */ ActivityRecord findActivityLocked(Intent intent, ActivityInfo info) { ActivityRecord findActivityLocked(Intent intent, ActivityInfo info, boolean compareIntentFilters) { ComponentName cls = intent.getComponent(); if (info.targetActivity != null) { cls = new ComponentName(info.packageName, info.targetActivity); Loading @@ -843,9 +844,17 @@ final class ActivityStack { if (notCurrentUserTask && (r.info.flags & FLAG_SHOW_FOR_ALL_USERS) == 0) { continue; } if (!r.finishing && r.intent.getComponent().equals(cls) && r.userId == userId) { if (!r.finishing && r.userId == userId) { if (compareIntentFilters) { if (r.intent.filterEquals(intent)) { return r; } } else { if (r.intent.getComponent().equals(cls)) { return r; } } } } } Loading services/core/java/com/android/server/am/ActivityStackSupervisor.java +4 −2 Original line number Diff line number Diff line Loading @@ -2621,11 +2621,13 @@ public final class ActivityStackSupervisor implements DisplayListener { return mTmpFindTaskResult.r; } ActivityRecord findActivityLocked(Intent intent, ActivityInfo info) { ActivityRecord findActivityLocked(Intent intent, ActivityInfo info, boolean compareIntentFilters) { for (int displayNdx = mActivityDisplays.size() - 1; displayNdx >= 0; --displayNdx) { final ArrayList<ActivityStack> stacks = mActivityDisplays.valueAt(displayNdx).mStacks; for (int stackNdx = stacks.size() - 1; stackNdx >= 0; --stackNdx) { final ActivityRecord ar = stacks.get(stackNdx).findActivityLocked(intent, info); final ActivityRecord ar = stacks.get(stackNdx) .findActivityLocked(intent, info, compareIntentFilters); if (ar != null) { return ar; } Loading services/core/java/com/android/server/am/ActivityStarter.java +2 −2 Original line number Diff line number Diff line Loading @@ -1438,11 +1438,11 @@ class ActivityStarter { if (mLaunchSingleInstance) { // There can be one and only one instance of single instance activity in the // history, and it is always in its own unique task, so we do a special search. intentActivity = mSupervisor.findActivityLocked(mIntent, mStartActivity.info); intentActivity = mSupervisor.findActivityLocked(mIntent, mStartActivity.info, false); } else if ((mLaunchFlags & FLAG_ACTIVITY_LAUNCH_ADJACENT) != 0) { // For the launch adjacent case we only want to put the activity in an existing // task if the activity already exists in the history. intentActivity = mSupervisor.findActivityLocked(mIntent, mStartActivity.info); intentActivity = mSupervisor.findActivityLocked(mIntent, mStartActivity.info, true); } else { // Otherwise find the best task to put the activity in. intentActivity = mSupervisor.findTaskLocked(mStartActivity); Loading Loading
services/core/java/com/android/server/am/ActivityStack.java +12 −3 Original line number Diff line number Diff line Loading @@ -825,7 +825,8 @@ final class ActivityStack { * is the same as the given activity. Returns null if no such activity * is found. */ ActivityRecord findActivityLocked(Intent intent, ActivityInfo info) { ActivityRecord findActivityLocked(Intent intent, ActivityInfo info, boolean compareIntentFilters) { ComponentName cls = intent.getComponent(); if (info.targetActivity != null) { cls = new ComponentName(info.packageName, info.targetActivity); Loading @@ -843,9 +844,17 @@ final class ActivityStack { if (notCurrentUserTask && (r.info.flags & FLAG_SHOW_FOR_ALL_USERS) == 0) { continue; } if (!r.finishing && r.intent.getComponent().equals(cls) && r.userId == userId) { if (!r.finishing && r.userId == userId) { if (compareIntentFilters) { if (r.intent.filterEquals(intent)) { return r; } } else { if (r.intent.getComponent().equals(cls)) { return r; } } } } } Loading
services/core/java/com/android/server/am/ActivityStackSupervisor.java +4 −2 Original line number Diff line number Diff line Loading @@ -2621,11 +2621,13 @@ public final class ActivityStackSupervisor implements DisplayListener { return mTmpFindTaskResult.r; } ActivityRecord findActivityLocked(Intent intent, ActivityInfo info) { ActivityRecord findActivityLocked(Intent intent, ActivityInfo info, boolean compareIntentFilters) { for (int displayNdx = mActivityDisplays.size() - 1; displayNdx >= 0; --displayNdx) { final ArrayList<ActivityStack> stacks = mActivityDisplays.valueAt(displayNdx).mStacks; for (int stackNdx = stacks.size() - 1; stackNdx >= 0; --stackNdx) { final ActivityRecord ar = stacks.get(stackNdx).findActivityLocked(intent, info); final ActivityRecord ar = stacks.get(stackNdx) .findActivityLocked(intent, info, compareIntentFilters); if (ar != null) { return ar; } Loading
services/core/java/com/android/server/am/ActivityStarter.java +2 −2 Original line number Diff line number Diff line Loading @@ -1438,11 +1438,11 @@ class ActivityStarter { if (mLaunchSingleInstance) { // There can be one and only one instance of single instance activity in the // history, and it is always in its own unique task, so we do a special search. intentActivity = mSupervisor.findActivityLocked(mIntent, mStartActivity.info); intentActivity = mSupervisor.findActivityLocked(mIntent, mStartActivity.info, false); } else if ((mLaunchFlags & FLAG_ACTIVITY_LAUNCH_ADJACENT) != 0) { // For the launch adjacent case we only want to put the activity in an existing // task if the activity already exists in the history. intentActivity = mSupervisor.findActivityLocked(mIntent, mStartActivity.info); intentActivity = mSupervisor.findActivityLocked(mIntent, mStartActivity.info, true); } else { // Otherwise find the best task to put the activity in. intentActivity = mSupervisor.findTaskLocked(mStartActivity); Loading