diff options
author | Michael Jurka <mikejurka@google.com> | 2013-05-20 15:49:32 +0200 |
---|---|---|
committer | Steve Kondik <shade@chemlab.org> | 2013-08-17 02:35:26 -0700 |
commit | 9f18e8f78ef2772edf94987cfb5129c71e62aac5 (patch) | |
tree | 2df21569651ab63b70eb863e310739fac884e282 /src/com/cyanogenmod/trebuchet/LauncherModel.java | |
parent | 5a0686bd65fcb249be11f1053849013750637e84 (diff) | |
download | android_packages_apps_Trebuchet-9f18e8f78ef2772edf94987cfb5129c71e62aac5.tar.gz android_packages_apps_Trebuchet-9f18e8f78ef2772edf94987cfb5129c71e62aac5.tar.bz2 android_packages_apps_Trebuchet-9f18e8f78ef2772edf94987cfb5129c71e62aac5.zip |
Fixing slow binding when returning to Launcher
Bug: 8978842
Bug: 8660324
Change-Id: Idfa37c05ed299faa465ea66de4b43d30da77ecbc
Diffstat (limited to 'src/com/cyanogenmod/trebuchet/LauncherModel.java')
-rw-r--r-- | src/com/cyanogenmod/trebuchet/LauncherModel.java | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/src/com/cyanogenmod/trebuchet/LauncherModel.java b/src/com/cyanogenmod/trebuchet/LauncherModel.java index a4308f517..94829242a 100644 --- a/src/com/cyanogenmod/trebuchet/LauncherModel.java +++ b/src/com/cyanogenmod/trebuchet/LauncherModel.java @@ -156,7 +156,7 @@ public class LauncherModel extends BroadcastReceiver { public void bindAppsAdded(ArrayList<ApplicationInfo> apps); public void bindAppsUpdated(ArrayList<ApplicationInfo> apps); public void bindAppsRemoved(ArrayList<String> packageNames, boolean permanent); - public void bindPackagesUpdated(); + public void bindPackagesUpdated(ArrayList<Object> widgetsAndShortcuts); public boolean isAllAppsVisible(); public void bindSearchablesChanged(); public void onPageBoundSynchronously(int page); @@ -2202,18 +2202,32 @@ public class LauncherModel extends BroadcastReceiver { }); } + final ArrayList<Object> widgetsAndShortcuts = + getSortedWidgetsAndShortcuts(context); mHandler.post(new Runnable() { @Override public void run() { Callbacks cb = mCallbacks != null ? mCallbacks.get() : null; - if (callbacks == cb) { - callbacks.bindPackagesUpdated(); + if (callbacks == cb && cb != null) { + callbacks.bindPackagesUpdated(widgetsAndShortcuts); } } }); } } + // Returns a list of ResolveInfos/AppWindowInfos in sorted order + public static ArrayList<Object> getSortedWidgetsAndShortcuts(Context context) { + PackageManager packageManager = context.getPackageManager(); + final ArrayList<Object> widgetsAndShortcuts = new ArrayList<Object>(); + widgetsAndShortcuts.addAll(AppWidgetManager.getInstance(context).getInstalledProviders()); + Intent shortcutsIntent = new Intent(Intent.ACTION_CREATE_SHORTCUT); + widgetsAndShortcuts.addAll(packageManager.queryIntentActivities(shortcutsIntent, 0)); + Collections.sort(widgetsAndShortcuts, + new LauncherModel.WidgetAndShortcutNameComparator(packageManager)); + return widgetsAndShortcuts; + } + /** * This is called from the code that adds shortcuts from the intent receiver. This * doesn't have a Cursor, but |