Request high res icons for app pairs after all workspace items processed
* TL;DR Loading workspace icons only requests high res icons for apps
on workspace or in hotseat, not for folders or app pairs. They need to
request that separately
* See notes on bug for root cause
Test: Created many app pairs, empty icons does not repro.
If I remove my change issue consistently repros, not a race condition
Fixes: 323106492
Change-Id: I05ba5e8e8b0eddd4041642f89d06deff85511e40
diff --git a/src/com/android/launcher3/model/LoaderTask.java b/src/com/android/launcher3/model/LoaderTask.java
index 71ab51c..17cef90 100644
--- a/src/com/android/launcher3/model/LoaderTask.java
+++ b/src/com/android/launcher3/model/LoaderTask.java
@@ -475,12 +475,24 @@
mItemsDeleted = c.commitDeleted();
processFolderItems();
+ processAppPairItems();
c.commitRestoredItems();
}
}
/**
+ * After all items have been processed and added to the BgDataModel, this method requests
+ * high-res icons for the items that are part of an app pair
+ */
+ private void processAppPairItems() {
+ mBgDataModel.workspaceItems.stream()
+ .filter((itemInfo -> itemInfo.itemType == ITEM_TYPE_APP_PAIR))
+ .forEach(fi -> ((FolderInfo) fi).contents.forEach(item ->
+ mIconCache.getTitleAndIcon(item, false /*useLowResIcon*/)));
+ }
+
+ /**
* Initialized the UserManagerState, and determines which users are unlocked. Additionally, if
* the user is unlocked, it queries LauncherAppsService for pinned shortcuts and stores the
* result in a class variable to be used in other methods while processing workspace items.