diff options
author | Hyunyoung Song <hyunyoungs@google.com> | 2015-05-21 20:25:15 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-05-21 20:25:16 +0000 |
commit | edc9c0564454ed38dd3006c9ae4b82a449f447a4 (patch) | |
tree | 2f8e5cb5345dd89fd3f29c4cf1bcc4409d8abe52 /src/com/android/launcher3/LauncherModel.java | |
parent | 6d65ab9e55c46138282adcd6b39e2b25521bade2 (diff) | |
parent | 2bd3d7d1cb5e4d8d826982d11b456739fed6b817 (diff) | |
download | android_packages_apps_Trebuchet-edc9c0564454ed38dd3006c9ae4b82a449f447a4.tar.gz android_packages_apps_Trebuchet-edc9c0564454ed38dd3006c9ae4b82a449f447a4.tar.bz2 android_packages_apps_Trebuchet-edc9c0564454ed38dd3006c9ae4b82a449f447a4.zip |
Merge "Load PackageItemInfo in background thread to prevent ANR" into ub-launcher3-burnaby
Diffstat (limited to 'src/com/android/launcher3/LauncherModel.java')
-rw-r--r-- | src/com/android/launcher3/LauncherModel.java | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/src/com/android/launcher3/LauncherModel.java b/src/com/android/launcher3/LauncherModel.java index ad176aeca..a04d92ecc 100644 --- a/src/com/android/launcher3/LauncherModel.java +++ b/src/com/android/launcher3/LauncherModel.java @@ -58,6 +58,7 @@ import com.android.launcher3.compat.PackageInstallerCompat; import com.android.launcher3.compat.PackageInstallerCompat.PackageInstallInfo; import com.android.launcher3.compat.UserHandleCompat; import com.android.launcher3.compat.UserManagerCompat; +import com.android.launcher3.model.WidgetsModel; import com.android.launcher3.util.ComponentKey; import com.android.launcher3.util.LongArrayMap; import com.android.launcher3.util.ManagedProfileHeuristic; @@ -203,7 +204,7 @@ public class LauncherModel extends BroadcastReceiver public void bindRestoreItemsChange(HashSet<ItemInfo> updates); public void bindComponentsRemoved(ArrayList<String> packageNames, ArrayList<AppInfo> appInfos, UserHandleCompat user, int reason); - public void bindAllPackages(ArrayList<Object> widgetsAndShortcuts); + public void bindAllPackages(WidgetsModel model); public void bindSearchablesChanged(); public boolean isAllAppsButtonRank(int rank); public void onPageBoundSynchronously(int page); @@ -3346,18 +3347,19 @@ public class LauncherModel extends BroadcastReceiver runOnWorkerThread(new Runnable(){ @Override public void run() { - final ArrayList<Object> list = getWidgetsAndShortcuts(context, refresh); + final WidgetsModel model = createWidgetsModel(context, refresh); mHandler.post(new Runnable() { @Override public void run() { Callbacks cb = getCallback(); if (callbacks == cb && cb != null) { - callbacks.bindAllPackages(list); + callbacks.bindAllPackages(model); } } }); // update the Widget entries inside DB on the worker thread. - LauncherAppState.getInstance().getWidgetCache().removeObsoletePreviews(list); + LauncherAppState.getInstance().getWidgetCache().removeObsoletePreviews( + model.getRawList()); } }); } @@ -3367,13 +3369,15 @@ public class LauncherModel extends BroadcastReceiver * * @see #loadAndBindWidgetsAndShortcuts */ - private ArrayList<Object> getWidgetsAndShortcuts(Context context, boolean refresh) { + private WidgetsModel createWidgetsModel(Context context, boolean refresh) { PackageManager packageManager = context.getPackageManager(); final ArrayList<Object> widgetsAndShortcuts = new ArrayList<Object>(); widgetsAndShortcuts.addAll(getWidgetProviders(context, refresh)); Intent shortcutsIntent = new Intent(Intent.ACTION_CREATE_SHORTCUT); widgetsAndShortcuts.addAll(packageManager.queryIntentActivities(shortcutsIntent, 0)); - return widgetsAndShortcuts; + WidgetsModel model = new WidgetsModel(context); + model.addWidgetsAndShortcuts(widgetsAndShortcuts); + return model; } @Thunk static boolean isPackageDisabled(Context context, String packageName, |