Loading services/core/java/com/android/server/am/ActivityStack.java +34 −2 Original line number Diff line number Diff line Loading @@ -1896,9 +1896,31 @@ final class ActivityStack { return true; } private TaskRecord getNextTask(TaskRecord targetTask) { final int index = mTaskHistory.indexOf(targetTask); if (index >= 0) { final int numTasks = mTaskHistory.size(); for (int i = index + 1; i < numTasks; ++i) { TaskRecord task = mTaskHistory.get(i); if (task.userId == targetTask.userId) { return task; } } } return null; } private void insertTaskAtTop(TaskRecord task) { // 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()); } } // If this is being moved to the top by another activity or being launched from the home // activity, set mOnTopOfHome accordingly. // activity, set mTaskToReturnTo accordingly. if (isOnHomeDisplay()) { ActivityStack lastStack = mStackSupervisor.getLastStack(); final boolean fromHome = lastStack.isHomeStack(); Loading Loading @@ -3560,6 +3582,15 @@ final class ActivityStack { if (DEBUG_TRANSITION) Slog.v(TAG, "Prepare to back transition: task=" + taskId); boolean prevIsHome = false; if (tr.isOverHomeStack()) { final TaskRecord nextTask = getNextTask(tr); if (nextTask != null) { nextTask.setTaskToReturnTo(tr.getTaskToReturnTo()); } else { prevIsHome = true; } } mTaskHistory.remove(tr); mTaskHistory.add(0, tr); updateTaskMovement(tr, false); Loading @@ -3586,7 +3617,8 @@ final class ActivityStack { } final TaskRecord task = mResumedActivity != null ? mResumedActivity.task : null; if (task == tr && tr.isOverHomeStack() || numTasks <= 1 && isOnHomeDisplay()) { if (prevIsHome || task == tr && tr.isOverHomeStack() || numTasks <= 1 && isOnHomeDisplay()) { if (!mService.mBooting && !mService.mBooted) { // Not ready yet! return false; Loading Loading
services/core/java/com/android/server/am/ActivityStack.java +34 −2 Original line number Diff line number Diff line Loading @@ -1896,9 +1896,31 @@ final class ActivityStack { return true; } private TaskRecord getNextTask(TaskRecord targetTask) { final int index = mTaskHistory.indexOf(targetTask); if (index >= 0) { final int numTasks = mTaskHistory.size(); for (int i = index + 1; i < numTasks; ++i) { TaskRecord task = mTaskHistory.get(i); if (task.userId == targetTask.userId) { return task; } } } return null; } private void insertTaskAtTop(TaskRecord task) { // 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()); } } // If this is being moved to the top by another activity or being launched from the home // activity, set mOnTopOfHome accordingly. // activity, set mTaskToReturnTo accordingly. if (isOnHomeDisplay()) { ActivityStack lastStack = mStackSupervisor.getLastStack(); final boolean fromHome = lastStack.isHomeStack(); Loading Loading @@ -3560,6 +3582,15 @@ final class ActivityStack { if (DEBUG_TRANSITION) Slog.v(TAG, "Prepare to back transition: task=" + taskId); boolean prevIsHome = false; if (tr.isOverHomeStack()) { final TaskRecord nextTask = getNextTask(tr); if (nextTask != null) { nextTask.setTaskToReturnTo(tr.getTaskToReturnTo()); } else { prevIsHome = true; } } mTaskHistory.remove(tr); mTaskHistory.add(0, tr); updateTaskMovement(tr, false); Loading @@ -3586,7 +3617,8 @@ final class ActivityStack { } final TaskRecord task = mResumedActivity != null ? mResumedActivity.task : null; if (task == tr && tr.isOverHomeStack() || numTasks <= 1 && isOnHomeDisplay()) { if (prevIsHome || task == tr && tr.isOverHomeStack() || numTasks <= 1 && isOnHomeDisplay()) { if (!mService.mBooting && !mService.mBooted) { // Not ready yet! return false; Loading