summaryrefslogtreecommitdiffstats
path: root/src/com/cyanogenmod/trebuchet/LauncherModel.java
diff options
context:
space:
mode:
authorMichael Jurka <mikejurka@google.com>2013-05-20 15:49:32 +0200
committerSteve Kondik <shade@chemlab.org>2013-08-17 02:35:26 -0700
commit9f18e8f78ef2772edf94987cfb5129c71e62aac5 (patch)
tree2df21569651ab63b70eb863e310739fac884e282 /src/com/cyanogenmod/trebuchet/LauncherModel.java
parent5a0686bd65fcb249be11f1053849013750637e84 (diff)
downloadandroid_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.java20
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