mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-03-02 08:56:55 +00:00
Revert "Revert "Revert "Revert "cache shourtcut image""""
This reverts commit 52908c9adc.
Reason for revert: roll-forward and fixes the crash due to access icon cache on main thread
Bug: 141568904
Change-Id: I1274db349c4f508d9cf59735b5f15180bb0ec033
This commit is contained in:
@@ -63,6 +63,7 @@ import com.android.launcher3.icons.ComponentWithLabel.ComponentCachingLogic;
|
||||
import com.android.launcher3.icons.IconCache;
|
||||
import com.android.launcher3.icons.LauncherActivityCachingLogic;
|
||||
import com.android.launcher3.icons.LauncherIcons;
|
||||
import com.android.launcher3.icons.ShortcutCachingLogic;
|
||||
import com.android.launcher3.icons.cache.IconCacheUpdateHandler;
|
||||
import com.android.launcher3.logging.FileLog;
|
||||
import com.android.launcher3.pm.PackageInstallInfo;
|
||||
@@ -182,7 +183,8 @@ public class LoaderTask implements Runnable {
|
||||
TraceHelper.INSTANCE.beginSection(TAG);
|
||||
TimingLogger logger = new TimingLogger(TAG, "run");
|
||||
try (LauncherModel.LoaderTransaction transaction = mApp.getModel().beginLoader(this)) {
|
||||
loadWorkspace();
|
||||
List<ShortcutInfo> allShortcuts = new ArrayList<>();
|
||||
loadWorkspace(allShortcuts);
|
||||
logger.addSplit("loadWorkspace");
|
||||
|
||||
verifyNotStopped();
|
||||
@@ -214,19 +216,29 @@ public class LoaderTask implements Runnable {
|
||||
mApp.getModel()::onPackageIconsUpdated);
|
||||
logger.addSplit("update icon cache");
|
||||
|
||||
verifyNotStopped();
|
||||
logger.addSplit("save shortcuts in icon cache");
|
||||
updateHandler.updateIcons(allShortcuts, new ShortcutCachingLogic(),
|
||||
mApp.getModel()::onPackageIconsUpdated);
|
||||
|
||||
// Take a break
|
||||
waitForIdle();
|
||||
logger.addSplit("step 2 complete");
|
||||
verifyNotStopped();
|
||||
|
||||
// third step
|
||||
loadDeepShortcuts();
|
||||
List<ShortcutInfo> allDeepShortcuts = loadDeepShortcuts();
|
||||
logger.addSplit("loadDeepShortcuts");
|
||||
|
||||
verifyNotStopped();
|
||||
mResults.bindDeepShortcuts();
|
||||
logger.addSplit("bindDeepShortcuts");
|
||||
|
||||
verifyNotStopped();
|
||||
logger.addSplit("save deep shortcuts in icon cache");
|
||||
updateHandler.updateIcons(allDeepShortcuts,
|
||||
new ShortcutCachingLogic(), (pkgs, user) -> { });
|
||||
|
||||
// Take a break
|
||||
waitForIdle();
|
||||
logger.addSplit("step 3 complete");
|
||||
@@ -268,7 +280,7 @@ public class LoaderTask implements Runnable {
|
||||
this.notify();
|
||||
}
|
||||
|
||||
private void loadWorkspace() {
|
||||
private void loadWorkspace(List<ShortcutInfo> allDeepShortcuts) {
|
||||
final Context context = mApp.getContext();
|
||||
final ContentResolver contentResolver = context.getContentResolver();
|
||||
final PackageManagerHelper pmHelper = new PackageManagerHelper(context);
|
||||
@@ -523,6 +535,7 @@ public class LoaderTask implements Runnable {
|
||||
info.runtimeStatusFlags |= FLAG_DISABLED_SUSPENDED;
|
||||
}
|
||||
intent = info.intent;
|
||||
allDeepShortcuts.add(pinnedShortcut);
|
||||
} else {
|
||||
// Create a shortcut info in disabled mode for now.
|
||||
info = c.loadSimpleWorkspaceItem();
|
||||
@@ -871,7 +884,8 @@ public class LoaderTask implements Runnable {
|
||||
return allActivityList;
|
||||
}
|
||||
|
||||
private void loadDeepShortcuts() {
|
||||
private List<ShortcutInfo> loadDeepShortcuts() {
|
||||
List<ShortcutInfo> allShortcuts = new ArrayList<>();
|
||||
mBgDataModel.deepShortcutMap.clear();
|
||||
mBgDataModel.hasShortcutHostPermission = mShortcutManager.hasHostPermission();
|
||||
if (mBgDataModel.hasShortcutHostPermission) {
|
||||
@@ -879,10 +893,12 @@ public class LoaderTask implements Runnable {
|
||||
if (mUserManager.isUserUnlocked(user)) {
|
||||
List<ShortcutInfo> shortcuts =
|
||||
mShortcutManager.queryForAllShortcuts(user);
|
||||
allShortcuts.addAll(shortcuts);
|
||||
mBgDataModel.updateDeepShortcutCounts(null, user, shortcuts);
|
||||
}
|
||||
}
|
||||
}
|
||||
return allShortcuts;
|
||||
}
|
||||
|
||||
public static boolean isValidProvider(AppWidgetProviderInfo provider) {
|
||||
|
||||
Reference in New Issue
Block a user