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;
|
||||
|
||||
if (DEBUG_TASKS) Slog.d(TAG_TASKS, "Looking for task of " + target + " in " + parent);
|
||||
parent.forAllTasks(this);
|
||||
parent.forAllLeafTasks(this);
|
||||
}
|
||||
|
||||
void clear() {
|
||||
|
||||
@@ -942,7 +942,7 @@ class Task extends WindowContainer<WindowContainer> {
|
||||
return;
|
||||
}
|
||||
|
||||
affinity = info.taskAffinity;
|
||||
affinity = isLeafTask() ? info.taskAffinity : null;
|
||||
if (intent == null) {
|
||||
// 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
|
||||
@@ -3398,6 +3398,24 @@ class Task extends WindowContainer<WindowContainer> {
|
||||
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
|
||||
Task getTask(Predicate<Task> callback, boolean traverseTopToBottom) {
|
||||
final Task t = super.getTask(callback, traverseTopToBottom);
|
||||
|
||||
@@ -1552,6 +1552,15 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer<
|
||||
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.
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user