Merge "Do not reuse non-leaf tasks for the starting activity" into rvc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
717dfad69c
@@ -327,7 +327,7 @@ class RootWindowContainer extends WindowContainer<DisplayContent>
|
|||||||
documentData = isDocument ? intent.getData() : null;
|
documentData = isDocument ? intent.getData() : null;
|
||||||
|
|
||||||
if (DEBUG_TASKS) Slog.d(TAG_TASKS, "Looking for task of " + target + " in " + parent);
|
if (DEBUG_TASKS) Slog.d(TAG_TASKS, "Looking for task of " + target + " in " + parent);
|
||||||
parent.forAllTasks(this);
|
parent.forAllLeafTasks(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
void clear() {
|
void clear() {
|
||||||
|
|||||||
@@ -942,7 +942,7 @@ class Task extends WindowContainer<WindowContainer> {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
affinity = info.taskAffinity;
|
affinity = isLeafTask() ? info.taskAffinity : null;
|
||||||
if (intent == null) {
|
if (intent == null) {
|
||||||
// If this task already has an intent associated with it, don't set the root
|
// If this task already has an intent associated with it, don't set the root
|
||||||
// affinity -- we don't want it changing after initially set, but the initially
|
// affinity -- we don't want it changing after initially set, but the initially
|
||||||
@@ -3398,6 +3398,24 @@ class Task extends WindowContainer<WindowContainer> {
|
|||||||
return callback.apply(this);
|
return callback.apply(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
boolean forAllLeafTasks(Function<Task, Boolean> callback) {
|
||||||
|
boolean isLeafTask = true;
|
||||||
|
for (int i = mChildren.size() - 1; i >= 0; --i) {
|
||||||
|
final Task child = mChildren.get(i).asTask();
|
||||||
|
if (child != null) {
|
||||||
|
isLeafTask = false;
|
||||||
|
if (child.forAllLeafTasks(callback)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (isLeafTask) {
|
||||||
|
return callback.apply(this);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
Task getTask(Predicate<Task> callback, boolean traverseTopToBottom) {
|
Task getTask(Predicate<Task> callback, boolean traverseTopToBottom) {
|
||||||
final Task t = super.getTask(callback, traverseTopToBottom);
|
final Task t = super.getTask(callback, traverseTopToBottom);
|
||||||
|
|||||||
@@ -1552,6 +1552,15 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer<
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
boolean forAllLeafTasks(Function<Task, Boolean> callback) {
|
||||||
|
for (int i = mChildren.size() - 1; i >= 0; --i) {
|
||||||
|
if (mChildren.get(i).forAllLeafTasks(callback)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* For all tasks at or below this container call the callback.
|
* For all tasks at or below this container call the callback.
|
||||||
*
|
*
|
||||||
|
|||||||
Reference in New Issue
Block a user