Sort flattened tasks based on last active time

Test: m
Flag: com.android.launcher3.enable_alt_tab_kqs_flatenning
Bug: 382769617
Change-Id: I1b7de34fbef9dd90c8d99ae9893ba71dcf565bc7
This commit is contained in:
Ajinkya Chalke committed 2025-04-14 17:10:32 +00:00
1 parent c19475ceef
commit d6c2964922
1 file changed
+12 -1
@@ -45,6 +45,7 @@ import com.android.systemui.shared.system.ActivityManagerWrapper;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Set;
import java.util.function.Consumer;
@@ -271,13 +272,23 @@ public final class KeyboardQuickSwitchController implements
.filter(task -> !shouldExcludeTask(task, taskIdsToExclude))
.toList();
// TODO(b/382769617): Sort tasks, including desktop and split, before limiting to max.
mTasks = allTasks.stream()
.sorted(combinedTasksComparator())
.limit(MAX_TASKS)
.toList();
mNumHiddenTasks = Math.max(0, allTasks.size() - MAX_TASKS);
}
private static Comparator<GroupTask> combinedTasksComparator() {
return Comparator.comparingLong((GroupTask groupTask) ->
groupTask.getTasks().stream()
.map(task -> task.key.lastActiveTime)
.max(Comparator.naturalOrder())
// Empty tasks list shouldn't be possible so return -1 in that case.
.orElse(-1L))
.reversed();
}
private void processLoadedTasksOutsideDesktop(List<GroupTask> tasks,
Set<Integer> taskIdsToExclude) {
// Only store MAX_TASK tasks, from most to least recent