Loading core/java/android/content/Intent.java +5 −3 Original line number Diff line number Diff line Loading @@ -2128,12 +2128,14 @@ public class Intent implements Parcelable { * of activity B, then C and D will be finished and B receive the given * Intent, resulting in the stack now being: A, B. * * <p>The currently running instance of task B in the above example will * <p>The currently running instance of activity B in the above example will * either receive the new intent you are starting here in its * onNewIntent() method, or be itself finished and restarted with the * new intent. If it has declared its launch mode to be "multiple" (the * default) it will be finished and re-created; for all other launch modes * it will receive the Intent in the current instance. * default) and you have not set {@link #FLAG_ACTIVITY_SINGLE_TOP} in * the same intent, then it will be finished and re-created; for all other * launch modes or if {@link #FLAG_ACTIVITY_SINGLE_TOP} is set then this * Intent will be delivered to the current instance's onNewIntent(). * * <p>This launch mode can also be used to good effect in conjunction with * {@link #FLAG_ACTIVITY_NEW_TASK}: if used to start the root activity Loading services/java/com/android/server/am/ActivityManagerService.java +5 −4 Original line number Diff line number Diff line Loading @@ -2915,7 +2915,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen * or null if none was found. */ private final HistoryRecord performClearTaskLocked(int taskId, HistoryRecord newR, boolean doClear) { HistoryRecord newR, int launchFlags, boolean doClear) { int i = mHistory.size(); // First find the requested task. Loading Loading @@ -2958,7 +2958,8 @@ public final class ActivityManagerService extends ActivityManagerNative implemen // Finally, if this is a normal launch mode (that is, not // expecting onNewIntent()), then we will finish the current // instance of the activity so a new fresh one can be started. if (ret.launchMode == ActivityInfo.LAUNCH_MULTIPLE) { if (ret.launchMode == ActivityInfo.LAUNCH_MULTIPLE && (launchFlags&Intent.FLAG_ACTIVITY_SINGLE_TOP) == 0) { if (!ret.finishing) { int index = indexOfTokenLocked(ret); if (index >= 0) { Loading Loading @@ -3355,7 +3356,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen // cases this means we are resetting the task to its // initial state. HistoryRecord top = performClearTaskLocked( taskTop.task.taskId, r, true); taskTop.task.taskId, r, launchFlags, true); if (top != null) { if (top.frontOfTask) { // Activity aliases may mean we use different Loading Loading @@ -3498,7 +3499,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen // task, but the caller has asked to clear that task if the // activity is already running. HistoryRecord top = performClearTaskLocked( sourceRecord.task.taskId, r, true); sourceRecord.task.taskId, r, launchFlags, true); if (top != null) { logStartActivity(LOG_AM_NEW_INTENT, r, top.task); deliverNewIntentLocked(top, r.intent); Loading Loading
core/java/android/content/Intent.java +5 −3 Original line number Diff line number Diff line Loading @@ -2128,12 +2128,14 @@ public class Intent implements Parcelable { * of activity B, then C and D will be finished and B receive the given * Intent, resulting in the stack now being: A, B. * * <p>The currently running instance of task B in the above example will * <p>The currently running instance of activity B in the above example will * either receive the new intent you are starting here in its * onNewIntent() method, or be itself finished and restarted with the * new intent. If it has declared its launch mode to be "multiple" (the * default) it will be finished and re-created; for all other launch modes * it will receive the Intent in the current instance. * default) and you have not set {@link #FLAG_ACTIVITY_SINGLE_TOP} in * the same intent, then it will be finished and re-created; for all other * launch modes or if {@link #FLAG_ACTIVITY_SINGLE_TOP} is set then this * Intent will be delivered to the current instance's onNewIntent(). * * <p>This launch mode can also be used to good effect in conjunction with * {@link #FLAG_ACTIVITY_NEW_TASK}: if used to start the root activity Loading
services/java/com/android/server/am/ActivityManagerService.java +5 −4 Original line number Diff line number Diff line Loading @@ -2915,7 +2915,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen * or null if none was found. */ private final HistoryRecord performClearTaskLocked(int taskId, HistoryRecord newR, boolean doClear) { HistoryRecord newR, int launchFlags, boolean doClear) { int i = mHistory.size(); // First find the requested task. Loading Loading @@ -2958,7 +2958,8 @@ public final class ActivityManagerService extends ActivityManagerNative implemen // Finally, if this is a normal launch mode (that is, not // expecting onNewIntent()), then we will finish the current // instance of the activity so a new fresh one can be started. if (ret.launchMode == ActivityInfo.LAUNCH_MULTIPLE) { if (ret.launchMode == ActivityInfo.LAUNCH_MULTIPLE && (launchFlags&Intent.FLAG_ACTIVITY_SINGLE_TOP) == 0) { if (!ret.finishing) { int index = indexOfTokenLocked(ret); if (index >= 0) { Loading Loading @@ -3355,7 +3356,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen // cases this means we are resetting the task to its // initial state. HistoryRecord top = performClearTaskLocked( taskTop.task.taskId, r, true); taskTop.task.taskId, r, launchFlags, true); if (top != null) { if (top.frontOfTask) { // Activity aliases may mean we use different Loading Loading @@ -3498,7 +3499,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen // task, but the caller has asked to clear that task if the // activity is already running. HistoryRecord top = performClearTaskLocked( sourceRecord.task.taskId, r, true); sourceRecord.task.taskId, r, launchFlags, true); if (top != null) { logStartActivity(LOG_AM_NEW_INTENT, r, top.task); deliverNewIntentLocked(top, r.intent); Loading