Loading services/core/java/com/android/server/am/ActivityStack.java +12 −11 Original line number Diff line number Diff line Loading @@ -785,17 +785,8 @@ final class ActivityStack { + taskIntent.getComponent().flattenToShortString() + "/aff=" + r.task.rootAffinity + " to new cls=" + intent.getComponent().flattenToShortString() + "/aff=" + info.taskAffinity); if (!isDocument && !taskIsDocument && result.r == null && task.canMatchRootAffinity()) { if (task.rootAffinity.equals(target.taskAffinity)) { if (DEBUG_TASKS) Slog.d(TAG_TASKS, "Found matching affinity candidate!"); // It is possible for multiple tasks to have the same root affinity especially // if they are in separate stacks. We save off this candidate, but keep looking // to see if there is a better candidate. result.r = r; result.matchedByRootAffinity = true; } } else if (taskIntent != null && taskIntent.getComponent() != null && // TODO Refactor to remove duplications. Check if logic can be simplified. if (taskIntent != null && taskIntent.getComponent() != null && taskIntent.getComponent().compareTo(cls) == 0 && Objects.equals(documentData, taskDocumentData)) { if (DEBUG_TASKS) Slog.d(TAG_TASKS, "Found matching class!"); Loading @@ -815,6 +806,16 @@ final class ActivityStack { result.r = r; result.matchedByRootAffinity = false; break; } else if (!isDocument && !taskIsDocument && result.r == null && task.canMatchRootAffinity()) { if (task.rootAffinity.equals(target.taskAffinity)) { if (DEBUG_TASKS) Slog.d(TAG_TASKS, "Found matching affinity candidate!"); // It is possible for multiple tasks to have the same root affinity especially // if they are in separate stacks. We save off this candidate, but keep looking // to see if there is a better candidate. result.r = r; result.matchedByRootAffinity = true; } } else if (DEBUG_TASKS) Slog.d(TAG_TASKS, "Not a match: " + task); } } Loading services/core/java/com/android/server/am/ActivityStarter.java +1 −1 Original line number Diff line number Diff line Loading @@ -1557,7 +1557,7 @@ class ActivityStarter { } intentActivity.deliverNewIntentLocked(mCallingUid, mStartActivity.intent, mStartActivity.launchedFromPackage); } else if (!intentActivity.task.isSameIntentResolution(mStartActivity)) { } else if (!intentActivity.task.isSameIntentFilter(mStartActivity)) { // In this case we are launching the root activity of the task, but with a // different intent. We should start a new instance on top. mAddingToTask = true; Loading services/core/java/com/android/server/am/TaskRecord.java +2 −2 Original line number Diff line number Diff line Loading @@ -492,10 +492,10 @@ final class TaskRecord { } /** * Return true if the input activity has the same intent resolution as the intent this task * Return true if the input activity has the same intent filter as the intent this task * record is based on (normally the root activity intent). */ boolean isSameIntentResolution(ActivityRecord r) { boolean isSameIntentFilter(ActivityRecord r) { final Intent intent = new Intent(r.intent); // Correct the activity intent for aliasing. The task record intent will always be based on // the real activity that will be launched not the alias, so we need to use an intent with Loading Loading
services/core/java/com/android/server/am/ActivityStack.java +12 −11 Original line number Diff line number Diff line Loading @@ -785,17 +785,8 @@ final class ActivityStack { + taskIntent.getComponent().flattenToShortString() + "/aff=" + r.task.rootAffinity + " to new cls=" + intent.getComponent().flattenToShortString() + "/aff=" + info.taskAffinity); if (!isDocument && !taskIsDocument && result.r == null && task.canMatchRootAffinity()) { if (task.rootAffinity.equals(target.taskAffinity)) { if (DEBUG_TASKS) Slog.d(TAG_TASKS, "Found matching affinity candidate!"); // It is possible for multiple tasks to have the same root affinity especially // if they are in separate stacks. We save off this candidate, but keep looking // to see if there is a better candidate. result.r = r; result.matchedByRootAffinity = true; } } else if (taskIntent != null && taskIntent.getComponent() != null && // TODO Refactor to remove duplications. Check if logic can be simplified. if (taskIntent != null && taskIntent.getComponent() != null && taskIntent.getComponent().compareTo(cls) == 0 && Objects.equals(documentData, taskDocumentData)) { if (DEBUG_TASKS) Slog.d(TAG_TASKS, "Found matching class!"); Loading @@ -815,6 +806,16 @@ final class ActivityStack { result.r = r; result.matchedByRootAffinity = false; break; } else if (!isDocument && !taskIsDocument && result.r == null && task.canMatchRootAffinity()) { if (task.rootAffinity.equals(target.taskAffinity)) { if (DEBUG_TASKS) Slog.d(TAG_TASKS, "Found matching affinity candidate!"); // It is possible for multiple tasks to have the same root affinity especially // if they are in separate stacks. We save off this candidate, but keep looking // to see if there is a better candidate. result.r = r; result.matchedByRootAffinity = true; } } else if (DEBUG_TASKS) Slog.d(TAG_TASKS, "Not a match: " + task); } } Loading
services/core/java/com/android/server/am/ActivityStarter.java +1 −1 Original line number Diff line number Diff line Loading @@ -1557,7 +1557,7 @@ class ActivityStarter { } intentActivity.deliverNewIntentLocked(mCallingUid, mStartActivity.intent, mStartActivity.launchedFromPackage); } else if (!intentActivity.task.isSameIntentResolution(mStartActivity)) { } else if (!intentActivity.task.isSameIntentFilter(mStartActivity)) { // In this case we are launching the root activity of the task, but with a // different intent. We should start a new instance on top. mAddingToTask = true; Loading
services/core/java/com/android/server/am/TaskRecord.java +2 −2 Original line number Diff line number Diff line Loading @@ -492,10 +492,10 @@ final class TaskRecord { } /** * Return true if the input activity has the same intent resolution as the intent this task * Return true if the input activity has the same intent filter as the intent this task * record is based on (normally the root activity intent). */ boolean isSameIntentResolution(ActivityRecord r) { boolean isSameIntentFilter(ActivityRecord r) { final Intent intent = new Intent(r.intent); // Correct the activity intent for aliasing. The task record intent will always be based on // the real activity that will be launched not the alias, so we need to use an intent with Loading