Loading services/core/java/com/android/server/am/ActivityStackSupervisor.java +25 −9 Original line number Diff line number Diff line Loading @@ -1194,8 +1194,7 @@ public final class ActivityStackSupervisor implements DisplayListener { requestCode = sourceRecord.requestCode; sourceRecord.resultTo = null; if (resultRecord != null) { resultRecord.removeResultsLocked( sourceRecord, resultWho, requestCode); resultRecord.removeResultsLocked(sourceRecord, resultWho, requestCode); } if (sourceRecord.launchedFromUid == callingUid) { // The new activity is being launched from the same uid as the previous Loading Loading @@ -1334,7 +1333,7 @@ public final class ActivityStackSupervisor implements DisplayListener { return err; } ActivityStack adjustStackFocus(ActivityRecord r) { ActivityStack adjustStackFocus(ActivityRecord r, boolean newTask) { final TaskRecord task = r.task; if (r.isApplicationActivity() || (task != null && task.isApplicationTask())) { if (task != null) { Loading @@ -1359,7 +1358,8 @@ public final class ActivityStackSupervisor implements DisplayListener { return container.mStack; } if (mFocusedStack != mHomeStack) { if (mFocusedStack != mHomeStack && (!newTask || mFocusedStack.mActivityContainer.isEligibleForNewTasks())) { if (DEBUG_FOCUS || DEBUG_STACK) Slog.d(TAG, "adjustStackFocus: Have a focused stack=" + mFocusedStack); return mFocusedStack; Loading Loading @@ -1727,7 +1727,8 @@ public final class ActivityStackSupervisor implements DisplayListener { // Should this be considered a new task? if (r.resultTo == null && !addingToTask && (launchFlags&Intent.FLAG_ACTIVITY_NEW_TASK) != 0) { targetStack = adjustStackFocus(r); newTask = true; targetStack = adjustStackFocus(r, newTask); targetStack.moveToFront(); if (reuseTask == null) { r.setTask(targetStack.createTaskRecord(getNextTaskId(), Loading @@ -1739,7 +1740,6 @@ public final class ActivityStackSupervisor implements DisplayListener { } else { r.setTask(reuseTask, reuseTask, true); } newTask = true; if (!movedHome) { if ((launchFlags & (Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_TASK_ON_HOME)) Loading Loading @@ -1803,7 +1803,7 @@ public final class ActivityStackSupervisor implements DisplayListener { // This not being started from an existing activity, and not part // of a new task... just put it in the top task, though these days // this case should never happen. targetStack = adjustStackFocus(r); targetStack = adjustStackFocus(r, newTask); targetStack.moveToFront(); ActivityRecord prev = targetStack.topActivity(); r.setTask(prev != null ? prev.task Loading Loading @@ -2235,7 +2235,12 @@ public final class ActivityStackSupervisor implements DisplayListener { for (int stackNdx = stacks.size() - 1; stackNdx >= 0; --stackNdx) { final ActivityStack stack = stacks.get(stackNdx); if (!r.isApplicationActivity() && !stack.isHomeStack()) { if (DEBUG_TASKS) Slog.d(TAG, "Skipping stack: " + stack); if (DEBUG_TASKS) Slog.d(TAG, "Skipping stack: (home activity) " + stack); continue; } if (!stack.mActivityContainer.isEligibleForNewTasks()) { if (DEBUG_TASKS) Slog.d(TAG, "Skipping stack: (new task not allowed) " + stack); continue; } final ActivityRecord ar = stack.findTaskLocked(r); Loading Loading @@ -3131,6 +3136,11 @@ public final class ActivityStackSupervisor implements DisplayListener { void setDrawn() { } // You can always start a new task on a regular ActivityStack. boolean isEligibleForNewTasks() { return true; } @Override public String toString() { return mIdString + (mActivityDisplay == null ? "N" : "A"); Loading Loading @@ -3211,6 +3221,12 @@ public final class ActivityStackSupervisor implements DisplayListener { } } // Never start a new task on an ActivityView if it isn't explicitly specified. @Override boolean isEligibleForNewTasks() { return false; } private void setSurfaceIfReady() { if (DEBUG_STACK) Slog.v(TAG, "setSurfaceIfReady: mDrawn=" + mDrawn + " mContainerState=" + mContainerState + " mSurface=" + mSurface); Loading Loading
services/core/java/com/android/server/am/ActivityStackSupervisor.java +25 −9 Original line number Diff line number Diff line Loading @@ -1194,8 +1194,7 @@ public final class ActivityStackSupervisor implements DisplayListener { requestCode = sourceRecord.requestCode; sourceRecord.resultTo = null; if (resultRecord != null) { resultRecord.removeResultsLocked( sourceRecord, resultWho, requestCode); resultRecord.removeResultsLocked(sourceRecord, resultWho, requestCode); } if (sourceRecord.launchedFromUid == callingUid) { // The new activity is being launched from the same uid as the previous Loading Loading @@ -1334,7 +1333,7 @@ public final class ActivityStackSupervisor implements DisplayListener { return err; } ActivityStack adjustStackFocus(ActivityRecord r) { ActivityStack adjustStackFocus(ActivityRecord r, boolean newTask) { final TaskRecord task = r.task; if (r.isApplicationActivity() || (task != null && task.isApplicationTask())) { if (task != null) { Loading @@ -1359,7 +1358,8 @@ public final class ActivityStackSupervisor implements DisplayListener { return container.mStack; } if (mFocusedStack != mHomeStack) { if (mFocusedStack != mHomeStack && (!newTask || mFocusedStack.mActivityContainer.isEligibleForNewTasks())) { if (DEBUG_FOCUS || DEBUG_STACK) Slog.d(TAG, "adjustStackFocus: Have a focused stack=" + mFocusedStack); return mFocusedStack; Loading Loading @@ -1727,7 +1727,8 @@ public final class ActivityStackSupervisor implements DisplayListener { // Should this be considered a new task? if (r.resultTo == null && !addingToTask && (launchFlags&Intent.FLAG_ACTIVITY_NEW_TASK) != 0) { targetStack = adjustStackFocus(r); newTask = true; targetStack = adjustStackFocus(r, newTask); targetStack.moveToFront(); if (reuseTask == null) { r.setTask(targetStack.createTaskRecord(getNextTaskId(), Loading @@ -1739,7 +1740,6 @@ public final class ActivityStackSupervisor implements DisplayListener { } else { r.setTask(reuseTask, reuseTask, true); } newTask = true; if (!movedHome) { if ((launchFlags & (Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_TASK_ON_HOME)) Loading Loading @@ -1803,7 +1803,7 @@ public final class ActivityStackSupervisor implements DisplayListener { // This not being started from an existing activity, and not part // of a new task... just put it in the top task, though these days // this case should never happen. targetStack = adjustStackFocus(r); targetStack = adjustStackFocus(r, newTask); targetStack.moveToFront(); ActivityRecord prev = targetStack.topActivity(); r.setTask(prev != null ? prev.task Loading Loading @@ -2235,7 +2235,12 @@ public final class ActivityStackSupervisor implements DisplayListener { for (int stackNdx = stacks.size() - 1; stackNdx >= 0; --stackNdx) { final ActivityStack stack = stacks.get(stackNdx); if (!r.isApplicationActivity() && !stack.isHomeStack()) { if (DEBUG_TASKS) Slog.d(TAG, "Skipping stack: " + stack); if (DEBUG_TASKS) Slog.d(TAG, "Skipping stack: (home activity) " + stack); continue; } if (!stack.mActivityContainer.isEligibleForNewTasks()) { if (DEBUG_TASKS) Slog.d(TAG, "Skipping stack: (new task not allowed) " + stack); continue; } final ActivityRecord ar = stack.findTaskLocked(r); Loading Loading @@ -3131,6 +3136,11 @@ public final class ActivityStackSupervisor implements DisplayListener { void setDrawn() { } // You can always start a new task on a regular ActivityStack. boolean isEligibleForNewTasks() { return true; } @Override public String toString() { return mIdString + (mActivityDisplay == null ? "N" : "A"); Loading Loading @@ -3211,6 +3221,12 @@ public final class ActivityStackSupervisor implements DisplayListener { } } // Never start a new task on an ActivityView if it isn't explicitly specified. @Override boolean isEligibleForNewTasks() { return false; } private void setSurfaceIfReady() { if (DEBUG_STACK) Slog.v(TAG, "setSurfaceIfReady: mDrawn=" + mDrawn + " mContainerState=" + mContainerState + " mSurface=" + mSurface); Loading