diff options
author | Michael Jurka <mikejurka@google.com> | 2013-05-20 15:49:32 +0200 |
---|---|---|
committer | Michael Jurka <mikejurka@google.com> | 2013-05-20 18:20:48 +0200 |
commit | c402cd9992d431b6beacdf3c75e31cf103e230cb (patch) | |
tree | df7df17c4ad684d2d362c495e63463c3cce36eac /src/com/android/launcher2/LauncherModel.java | |
parent | 447bf84d2454ac28ac26d70feea8139ed986c321 (diff) | |
download | android_packages_apps_Trebuchet-c402cd9992d431b6beacdf3c75e31cf103e230cb.tar.gz android_packages_apps_Trebuchet-c402cd9992d431b6beacdf3c75e31cf103e230cb.tar.bz2 android_packages_apps_Trebuchet-c402cd9992d431b6beacdf3c75e31cf103e230cb.zip |
Fixing slow binding when returning to Launcher
Bug: 8978842
Bug: 8660324
Change-Id: Idfa37c05ed299faa465ea66de4b43d30da77ecbc
Diffstat (limited to 'src/com/android/launcher2/LauncherModel.java')
-rw-r--r-- | src/com/android/launcher2/LauncherModel.java | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/src/com/android/launcher2/LauncherModel.java b/src/com/android/launcher2/LauncherModel.java index 99ebd962e..1d562beae 100644 --- a/src/com/android/launcher2/LauncherModel.java +++ b/src/com/android/launcher2/LauncherModel.java @@ -161,7 +161,7 @@ public class LauncherModel extends BroadcastReceiver { public void bindComponentsRemoved(ArrayList<String> packageNames, ArrayList<ApplicationInfo> appInfos, boolean matchPackageNamesOnly); - public void bindPackagesUpdated(); + public void bindPackagesUpdated(ArrayList<Object> widgetsAndShortcuts); public boolean isAllAppsVisible(); public boolean isAllAppsButtonRank(int rank); public void bindSearchablesChanged(); @@ -2105,18 +2105,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 && cb != null) { - callbacks.bindPackagesUpdated(); + 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 |