Merge "[ActivityManager] Set appropriate relation of task to home"
This commit is contained in:
@@ -1928,9 +1928,31 @@ final class ActivityStack {
|
|||||||
return true;
|
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) {
|
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
|
// 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()) {
|
if (isOnHomeDisplay()) {
|
||||||
ActivityStack lastStack = mStackSupervisor.getLastStack();
|
ActivityStack lastStack = mStackSupervisor.getLastStack();
|
||||||
final boolean fromHome = lastStack.isHomeStack();
|
final boolean fromHome = lastStack.isHomeStack();
|
||||||
@@ -3591,6 +3613,15 @@ final class ActivityStack {
|
|||||||
if (DEBUG_TRANSITION) Slog.v(TAG,
|
if (DEBUG_TRANSITION) Slog.v(TAG,
|
||||||
"Prepare to back transition: task=" + taskId);
|
"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.remove(tr);
|
||||||
mTaskHistory.add(0, tr);
|
mTaskHistory.add(0, tr);
|
||||||
updateTaskMovement(tr, false);
|
updateTaskMovement(tr, false);
|
||||||
@@ -3626,7 +3657,8 @@ final class ActivityStack {
|
|||||||
}
|
}
|
||||||
|
|
||||||
final TaskRecord task = mResumedActivity != null ? mResumedActivity.task : null;
|
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) {
|
if (!mService.mBooting && !mService.mBooted) {
|
||||||
// Not ready yet!
|
// Not ready yet!
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
Reference in New Issue
Block a user