mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-02-20 11:18:21 +00:00
Improve all apps loading times.
Updated loadAllApps to load all required icons in a series of bulk sql queries. This reduces the cost of SQL lookups (up to two lookups per user, rather than one lookup per icon) Bug: 195674813 Test: Added all icons to workspace, added duplicate icons, added icons for same component name from different users Change-Id: Ifda8980386084999c53d7f881e8967be0d57d263
This commit is contained in:
@@ -936,6 +936,8 @@ public class LoaderTask implements Runnable {
|
||||
List<LauncherActivityInfo> allActivityList = new ArrayList<>();
|
||||
// Clear the list of apps
|
||||
mBgAllAppsList.clear();
|
||||
|
||||
List<IconRequestInfo<AppInfo>> iconRequestInfos = new ArrayList<>();
|
||||
for (UserHandle user : profiles) {
|
||||
// Query for the set of apps
|
||||
final List<LauncherActivityInfo> apps = mLauncherApps.getActivityList(null, user);
|
||||
@@ -948,18 +950,43 @@ public class LoaderTask implements Runnable {
|
||||
// Create the ApplicationInfos
|
||||
for (int i = 0; i < apps.size(); i++) {
|
||||
LauncherActivityInfo app = apps.get(i);
|
||||
// This builds the icon bitmaps.
|
||||
mBgAllAppsList.add(new AppInfo(app, user, quietMode), app);
|
||||
AppInfo appInfo = new AppInfo(app, user, quietMode);
|
||||
|
||||
iconRequestInfos.add(new IconRequestInfo<>(
|
||||
appInfo, app, /* useLowResIcon= */ false));
|
||||
mBgAllAppsList.add(
|
||||
appInfo, app, !FeatureFlags.ENABLE_BULK_ALL_APPS_ICON_LOADING.get());
|
||||
}
|
||||
allActivityList.addAll(apps);
|
||||
}
|
||||
|
||||
|
||||
if (FeatureFlags.PROMISE_APPS_IN_ALL_APPS.get()) {
|
||||
// get all active sessions and add them to the all apps list
|
||||
for (PackageInstaller.SessionInfo info :
|
||||
mSessionHelper.getAllVerifiedSessions()) {
|
||||
mBgAllAppsList.addPromiseApp(mApp.getContext(),
|
||||
PackageInstallInfo.fromInstallingState(info));
|
||||
AppInfo promiseAppInfo = mBgAllAppsList.addPromiseApp(
|
||||
mApp.getContext(),
|
||||
PackageInstallInfo.fromInstallingState(info),
|
||||
!FeatureFlags.ENABLE_BULK_ALL_APPS_ICON_LOADING.get());
|
||||
|
||||
if (promiseAppInfo != null) {
|
||||
iconRequestInfos.add(new IconRequestInfo<>(
|
||||
promiseAppInfo,
|
||||
/* launcherActivityInfo= */ null,
|
||||
promiseAppInfo.usingLowResIcon()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (FeatureFlags.ENABLE_BULK_ALL_APPS_ICON_LOADING.get()) {
|
||||
Trace.beginSection("LoadAllAppsIconsInBulk");
|
||||
try {
|
||||
mIconCache.getTitlesAndIconsInBulk(iconRequestInfos);
|
||||
iconRequestInfos.forEach(iconRequestInfo ->
|
||||
mBgAllAppsList.updateSectionName(iconRequestInfo.itemInfo));
|
||||
} finally {
|
||||
Trace.endSection();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user