Loading services/core/java/com/android/server/am/ActivityStack.java +7 −1 Original line number Diff line number Diff line Loading @@ -2587,11 +2587,14 @@ final class ActivityStack { } private void insertTaskAtTop(TaskRecord task, ActivityRecord newActivity) { boolean isLastTaskOverHome = false; // If the moving task is over home stack, transfer its return type to next task if (task.isOverHomeStack()) { final TaskRecord nextTask = getNextTask(task); if (nextTask != null) { nextTask.setTaskToReturnTo(task.getTaskToReturnTo()); } else { isLastTaskOverHome = true; } } Loading @@ -2601,7 +2604,10 @@ final class ActivityStack { ActivityStack lastStack = mStackSupervisor.getLastStack(); final boolean fromHome = lastStack.isHomeStack(); if (!isHomeStack() && (fromHome || topTask() != task)) { int returnToType = APPLICATION_ACTIVITY_TYPE; // If it's a last task over home - we default to keep its return to type not to // make underlying task focused when this one will be finished. int returnToType = isLastTaskOverHome ? task.getTaskToReturnTo() : APPLICATION_ACTIVITY_TYPE; if (fromHome && StackId.allowTopTaskToReturnHome(mStackId)) { returnToType = lastStack.topTask() == null ? HOME_ACTIVITY_TYPE : lastStack.topTask().taskType; Loading services/core/java/com/android/server/am/ActivityStarter.java +5 −1 Original line number Diff line number Diff line Loading @@ -1121,7 +1121,11 @@ class ActivityStarter { return START_RETURN_LOCK_TASK_MODE_VIOLATION; } if (!mMovedOtherTask) { updateTaskReturnToType(mStartActivity.task, mLaunchFlags, topStack); // If stack id is specified in activity options, usually it means that activity is // launched not from currently focused stack (e.g. from SysUI or from shell) - in // that case we check the target stack. updateTaskReturnToType(mStartActivity.task, mLaunchFlags, preferredLaunchStackId != INVALID_STACK_ID ? mTargetStack : topStack); } } else if (mSourceRecord != null) { if (mSupervisor.isLockTaskModeViolation(mSourceRecord.task)) { Loading Loading
services/core/java/com/android/server/am/ActivityStack.java +7 −1 Original line number Diff line number Diff line Loading @@ -2587,11 +2587,14 @@ final class ActivityStack { } private void insertTaskAtTop(TaskRecord task, ActivityRecord newActivity) { boolean isLastTaskOverHome = false; // If the moving task is over home stack, transfer its return type to next task if (task.isOverHomeStack()) { final TaskRecord nextTask = getNextTask(task); if (nextTask != null) { nextTask.setTaskToReturnTo(task.getTaskToReturnTo()); } else { isLastTaskOverHome = true; } } Loading @@ -2601,7 +2604,10 @@ final class ActivityStack { ActivityStack lastStack = mStackSupervisor.getLastStack(); final boolean fromHome = lastStack.isHomeStack(); if (!isHomeStack() && (fromHome || topTask() != task)) { int returnToType = APPLICATION_ACTIVITY_TYPE; // If it's a last task over home - we default to keep its return to type not to // make underlying task focused when this one will be finished. int returnToType = isLastTaskOverHome ? task.getTaskToReturnTo() : APPLICATION_ACTIVITY_TYPE; if (fromHome && StackId.allowTopTaskToReturnHome(mStackId)) { returnToType = lastStack.topTask() == null ? HOME_ACTIVITY_TYPE : lastStack.topTask().taskType; Loading
services/core/java/com/android/server/am/ActivityStarter.java +5 −1 Original line number Diff line number Diff line Loading @@ -1121,7 +1121,11 @@ class ActivityStarter { return START_RETURN_LOCK_TASK_MODE_VIOLATION; } if (!mMovedOtherTask) { updateTaskReturnToType(mStartActivity.task, mLaunchFlags, topStack); // If stack id is specified in activity options, usually it means that activity is // launched not from currently focused stack (e.g. from SysUI or from shell) - in // that case we check the target stack. updateTaskReturnToType(mStartActivity.task, mLaunchFlags, preferredLaunchStackId != INVALID_STACK_ID ? mTargetStack : topStack); } } else if (mSourceRecord != null) { if (mSupervisor.isLockTaskModeViolation(mSourceRecord.task)) { Loading