summaryrefslogtreecommitdiffstats
path: root/src/com/android/launcher2/LauncherModel.java
diff options
context:
space:
mode:
authorMichael Jurka <mikejurka@google.com>2013-05-20 15:49:32 +0200
committerMichael Jurka <mikejurka@google.com>2013-05-20 18:20:48 +0200
commitc402cd9992d431b6beacdf3c75e31cf103e230cb (patch)
treedf7df17c4ad684d2d362c495e63463c3cce36eac /src/com/android/launcher2/LauncherModel.java
parent447bf84d2454ac28ac26d70feea8139ed986c321 (diff)
downloadandroid_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.java18
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