summaryrefslogtreecommitdiffstats
path: root/src/com/android/launcher3/LauncherModel.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/launcher3/LauncherModel.java')
-rw-r--r--src/com/android/launcher3/LauncherModel.java37
1 files changed, 23 insertions, 14 deletions
diff --git a/src/com/android/launcher3/LauncherModel.java b/src/com/android/launcher3/LauncherModel.java
index 92f076f0b..0138a913a 100644
--- a/src/com/android/launcher3/LauncherModel.java
+++ b/src/com/android/launcher3/LauncherModel.java
@@ -204,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 bindPackagesUpdated(ArrayList<Object> widgetsAndShortcuts);
+ public void bindAllPackages(ArrayList<Object> widgetsAndShortcuts);
public void bindSearchablesChanged();
public boolean isAllAppsButtonRank(int rank);
public void onPageBoundSynchronously(int page);
@@ -1305,6 +1305,9 @@ public class LauncherModel extends BroadcastReceiver
if (callbacks != null) {
callbacks.bindSearchablesChanged();
}
+ } else if (LauncherAppsCompat.ACTION_MANAGED_PROFILE_ADDED.equals(action)
+ || LauncherAppsCompat.ACTION_MANAGED_PROFILE_REMOVED.equals(action)) {
+ forceReload();
}
}
@@ -1632,9 +1635,6 @@ public class LauncherModel extends BroadcastReceiver
if (DEBUG_LOADERS) Log.d(TAG, "step 2: loading all apps");
loadAndBindAllApps();
- // Remove entries for packages which changed while the launcher was dead.
- LauncherAppState.getInstance().getWidgetCache().removeObsoletePreviews();
-
// Restore the default thread priority after we are done loading items
synchronized (mLock) {
android.os.Process.setThreadPriority(Process.THREAD_PRIORITY_DEFAULT);
@@ -2904,10 +2904,13 @@ public class LauncherModel extends BroadcastReceiver
// Post callback on main thread
mHandler.post(new Runnable() {
public void run() {
+
final long bindTime = SystemClock.uptimeMillis();
final Callbacks callbacks = tryGetCallbacks(oldCallbacks);
if (callbacks != null) {
callbacks.bindAllApplications(added);
+ loadAndBindWidgetsAndShortcuts(mApp.getContext(), callbacks,
+ true /* refresh */);
if (DEBUG_LOADERS) {
Log.d(TAG, "bound " + added.size() + " apps in "
+ (SystemClock.uptimeMillis() - bindTime) + "ms");
@@ -3268,9 +3271,10 @@ public class LauncherModel extends BroadcastReceiver
}
});
}
- if (Build.VERSION.SDK_INT < 17) {
- loadAndBindWidgetsAndShortcuts(context, callbacks);
- }
+
+ // onProvidersChanged method (API >= 17) already refreshed the widget list
+ loadAndBindWidgetsAndShortcuts(context, callbacks, Build.VERSION.SDK_INT < 17);
+
// Write all the logs to disk
mHandler.post(new Runnable() {
public void run() {
@@ -3319,33 +3323,38 @@ public class LauncherModel extends BroadcastReceiver
}
}
- public void loadAndBindWidgetsAndShortcuts(final Context context, final Callbacks callbacks) {
+ public void loadAndBindWidgetsAndShortcuts(final Context context, final Callbacks callbacks,
+ final boolean refresh) {
runOnWorkerThread(new Runnable(){
@Override
public void run() {
- final ArrayList<Object> list =
- getSortedWidgetsAndShortcuts(context, true /* refresh */);
+ final ArrayList<Object> list = getWidgetsAndShortcuts(context, refresh);
mHandler.post(new Runnable() {
@Override
public void run() {
Callbacks cb = getCallback();
if (callbacks == cb && cb != null) {
- callbacks.bindPackagesUpdated(list);
+ callbacks.bindAllPackages(list);
}
}
});
+ // update the Widget entries inside DB on the worker thread.
+ LauncherAppState.getInstance().getWidgetCache().removeObsoletePreviews(list);
}
});
}
- // Returns a list of ResolveInfos/AppWidgetInfos in sorted order
- public static ArrayList<Object> getSortedWidgetsAndShortcuts(Context context, boolean refresh) {
+ /**
+ * Returns a list of ResolveInfos/AppWidgetInfos.
+ *
+ * @see #loadAndBindWidgetsAndShortcuts
+ */
+ private ArrayList<Object> getWidgetsAndShortcuts(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));
- Collections.sort(widgetsAndShortcuts, new WidgetAndShortcutNameComparator(context));
return widgetsAndShortcuts;
}