diff --git a/lawnchair/res/values/strings.xml b/lawnchair/res/values/strings.xml
index d594a2b56a..fe2a8c0492 100644
--- a/lawnchair/res/values/strings.xml
+++ b/lawnchair/res/values/strings.xml
@@ -326,6 +326,9 @@
Show when Full Name is Typed
Hide in Search Results
+ Bulk loading
+ Enable loading all apps icons in bulk
+
Search
Show Search Bar
Automatically Show Keyboard
diff --git a/lawnchair/src/app/lawnchair/preferences/PreferenceManager.kt b/lawnchair/src/app/lawnchair/preferences/PreferenceManager.kt
index 056f105e7c..13207e25be 100644
--- a/lawnchair/src/app/lawnchair/preferences/PreferenceManager.kt
+++ b/lawnchair/src/app/lawnchair/preferences/PreferenceManager.kt
@@ -84,6 +84,8 @@ class PreferenceManager private constructor(private val context: Context) : Base
val searchResultSettingsEntry = BoolPref("pref_searchResultSettingsEntry", false, recreate)
val searchResulRecentSuggestion = BoolPref("pref_searchResultRecentSuggestion", false, recreate)
+ val allAppBulkIconLoading = BoolPref("pref_allapps_bulk_icon_loading", false, recreate)
+
val themedIcons = BoolPref("themed_icons", true, recreate)
val drawerThemedIcons = BoolPref("drawer_themed_icons", false, recreate)
val hotseatQsbCornerRadius = FloatPref("pref_hotseatQsbCornerRadius", 1F, recreate)
diff --git a/lawnchair/src/app/lawnchair/ui/preferences/destinations/AppDrawerPreferences.kt b/lawnchair/src/app/lawnchair/ui/preferences/destinations/AppDrawerPreferences.kt
index a2984949e5..95dab6c574 100644
--- a/lawnchair/src/app/lawnchair/ui/preferences/destinations/AppDrawerPreferences.kt
+++ b/lawnchair/src/app/lawnchair/ui/preferences/destinations/AppDrawerPreferences.kt
@@ -66,6 +66,11 @@ fun AppDrawerPreferences() {
valueRange = 0F..1F,
showAsPercentage = true,
)
+ SwitchPreference(
+ label = stringResource(id = R.string.pref_all_apps_bulk_icon_loading_title),
+ description = stringResource(id = R.string.pref_all_apps_bulk_icon_loading_description),
+ adapter = prefs.allAppBulkIconLoading.getAdapter(),
+ )
SuggestionsPreference()
}
diff --git a/src/com/android/launcher3/model/LoaderTask.java b/src/com/android/launcher3/model/LoaderTask.java
index ce603e58e4..9357f9c304 100644
--- a/src/com/android/launcher3/model/LoaderTask.java
+++ b/src/com/android/launcher3/model/LoaderTask.java
@@ -108,6 +108,7 @@ import java.util.Set;
import java.util.concurrent.CancellationException;
import app.lawnchair.LawnchairAppKt;
+import app.lawnchair.preferences.PreferenceManager;
/**
* Runnable for the thread that loads the contents of the launcher:
@@ -939,6 +940,9 @@ public class LoaderTask implements Runnable {
// Clear the list of apps
mBgAllAppsList.clear();
+ var pref = PreferenceManager.getInstance(mApp.getContext());
+ var enableBulkLoading = pref.getAllAppBulkIconLoading().get();
+
List> iconRequestInfos = new ArrayList<>();
for (UserHandle user : profiles) {
// Query for the set of apps
@@ -957,7 +961,7 @@ public class LoaderTask implements Runnable {
iconRequestInfos.add(new IconRequestInfo<>(
appInfo, app, /* useLowResIcon= */ false));
mBgAllAppsList.add(
- appInfo, app, false);
+ appInfo, app, !enableBulkLoading);
}
allActivityList.addAll(apps);
}
@@ -968,7 +972,7 @@ public class LoaderTask implements Runnable {
AppInfo promiseAppInfo = mBgAllAppsList.addPromiseApp(
mApp.getContext(),
PackageInstallInfo.fromInstallingState(info),
- false);
+ !enableBulkLoading);
if (promiseAppInfo != null) {
iconRequestInfos.add(new IconRequestInfo<>(
@@ -979,12 +983,14 @@ public class LoaderTask implements Runnable {
}
}
- Trace.beginSection("LoadAllAppsIconsInBulk");
- try {
- mIconCache.getTitlesAndIconsInBulk(iconRequestInfos);
- iconRequestInfos.forEach(iconRequestInfo -> mBgAllAppsList.updateSectionName(iconRequestInfo.itemInfo));
- } finally {
- Trace.endSection();
+ if (enableBulkLoading) {
+ Trace.beginSection("LoadAllAppsIconsInBulk");
+ try {
+ mIconCache.getTitlesAndIconsInBulk(iconRequestInfos);
+ iconRequestInfos.forEach(iconRequestInfo -> mBgAllAppsList.updateSectionName(iconRequestInfo.itemInfo));
+ } finally {
+ Trace.endSection();
+ }
}
mBgAllAppsList.setFlags(FLAG_QUIET_MODE_ENABLED,