Loading go/quickstep/src/com/android/quickstep/TaskListLoader.java +20 −14 Original line number Diff line number Diff line Loading @@ -85,34 +85,40 @@ public final class TaskListLoader { } /** * Loads task content for a list of tasks, including the label and the icon. Uses the list of * tasks since the last load as a cache for loaded content. * Loads task content for a list of tasks, including the label, icon, and thumbnail. For content * that isn't cached, load the content asynchronously in the background. * * @param tasksToLoad list of tasks that need to load their content * @param onLoadedCallback runnable to run after all tasks have loaded their content * @param onFullyLoadedCallback runnable to run after all tasks have loaded their content */ private void loadTaskContents(ArrayList<Task> tasksToLoad, @Nullable Runnable onLoadedCallback) { AtomicInteger loadRequestsCount = new AtomicInteger(0); @Nullable Runnable onFullyLoadedCallback) { // Make two load requests per task, one for the icon/title and one for the thumbnail. AtomicInteger loadRequestsCount = new AtomicInteger(tasksToLoad.size() * 2); Runnable itemLoadedRunnable = () -> { if (loadRequestsCount.decrementAndGet() == 0 && onFullyLoadedCallback != null) { onFullyLoadedCallback.run(); } }; for (Task task : tasksToLoad) { // Load icon and title. int index = mTaskList.indexOf(task); if (index >= 0) { // If we've already loaded the task and have its content then just copy it over. Task loadedTask = mTaskList.get(index); task.titleDescription = loadedTask.titleDescription; task.icon = loadedTask.icon; itemLoadedRunnable.run(); } else { // Otherwise, load the content in the background. loadRequestsCount.getAndIncrement(); mRecentsModel.getIconCache().updateIconInBackground(task, loadedTask -> { if (loadRequestsCount.decrementAndGet() == 0 && onLoadedCallback != null) { onLoadedCallback.run(); } }); mRecentsModel.getIconCache().updateIconInBackground(task, loadedTask -> itemLoadedRunnable.run()); } } if (loadRequestsCount.get() == 0 && onLoadedCallback != null) { onLoadedCallback.run(); // Load the thumbnail. May return immediately and synchronously if the thumbnail is // cached. mRecentsModel.getThumbnailCache().updateThumbnailInBackground(task, thumbnail -> itemLoadedRunnable.run()); } } } Loading
go/quickstep/src/com/android/quickstep/TaskListLoader.java +20 −14 Original line number Diff line number Diff line Loading @@ -85,34 +85,40 @@ public final class TaskListLoader { } /** * Loads task content for a list of tasks, including the label and the icon. Uses the list of * tasks since the last load as a cache for loaded content. * Loads task content for a list of tasks, including the label, icon, and thumbnail. For content * that isn't cached, load the content asynchronously in the background. * * @param tasksToLoad list of tasks that need to load their content * @param onLoadedCallback runnable to run after all tasks have loaded their content * @param onFullyLoadedCallback runnable to run after all tasks have loaded their content */ private void loadTaskContents(ArrayList<Task> tasksToLoad, @Nullable Runnable onLoadedCallback) { AtomicInteger loadRequestsCount = new AtomicInteger(0); @Nullable Runnable onFullyLoadedCallback) { // Make two load requests per task, one for the icon/title and one for the thumbnail. AtomicInteger loadRequestsCount = new AtomicInteger(tasksToLoad.size() * 2); Runnable itemLoadedRunnable = () -> { if (loadRequestsCount.decrementAndGet() == 0 && onFullyLoadedCallback != null) { onFullyLoadedCallback.run(); } }; for (Task task : tasksToLoad) { // Load icon and title. int index = mTaskList.indexOf(task); if (index >= 0) { // If we've already loaded the task and have its content then just copy it over. Task loadedTask = mTaskList.get(index); task.titleDescription = loadedTask.titleDescription; task.icon = loadedTask.icon; itemLoadedRunnable.run(); } else { // Otherwise, load the content in the background. loadRequestsCount.getAndIncrement(); mRecentsModel.getIconCache().updateIconInBackground(task, loadedTask -> { if (loadRequestsCount.decrementAndGet() == 0 && onLoadedCallback != null) { onLoadedCallback.run(); } }); mRecentsModel.getIconCache().updateIconInBackground(task, loadedTask -> itemLoadedRunnable.run()); } } if (loadRequestsCount.get() == 0 && onLoadedCallback != null) { onLoadedCallback.run(); // Load the thumbnail. May return immediately and synchronously if the thumbnail is // cached. mRecentsModel.getThumbnailCache().updateThumbnailInBackground(task, thumbnail -> itemLoadedRunnable.run()); } } }