From fe1dcbf0c5a1767e077a051ef5f7b72540d55f62 Mon Sep 17 00:00:00 2001 From: Hyunyoung Song Date: Wed, 11 Mar 2015 16:36:52 -0700 Subject: Fix widget refresh issue on package install/uninstall Culprit CL: https://googleplex-android-review.git.corp.google.com/#/c/592303/3/src/com/android/launcher3/LauncherModel.java b/19658229 Change-Id: I02b0b2a0ed9bc3200bbe1edcb251cf0efe939e53 --- src/com/android/launcher3/Launcher.java | 4 ++-- src/com/android/launcher3/LauncherAppWidgetHost.java | 3 ++- src/com/android/launcher3/LauncherModel.java | 17 ++++++++--------- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java index cd861d4e0..a7e32d31a 100644 --- a/src/com/android/launcher3/Launcher.java +++ b/src/com/android/launcher3/Launcher.java @@ -4608,13 +4608,13 @@ public class Launcher extends Activity } if (mAppsCustomizeContent != null) { mAppsCustomizeContent.onPackagesUpdated( - LauncherModel.getSortedWidgetsAndShortcuts(this)); + LauncherModel.getSortedWidgetsAndShortcuts(this, false /* refresh */)); } } else { if (mAppsCustomizeContent != null) { mAppsCustomizeContent.setApps(apps); mAppsCustomizeContent.onPackagesUpdated( - LauncherModel.getSortedWidgetsAndShortcuts(this)); + LauncherModel.getSortedWidgetsAndShortcuts(this, false /* refresh */)); } } if (mLauncherCallbacks != null) { diff --git a/src/com/android/launcher3/LauncherAppWidgetHost.java b/src/com/android/launcher3/LauncherAppWidgetHost.java index 840508a1d..a28fd255a 100644 --- a/src/com/android/launcher3/LauncherAppWidgetHost.java +++ b/src/com/android/launcher3/LauncherAppWidgetHost.java @@ -81,7 +81,8 @@ public class LauncherAppWidgetHost extends AppWidgetHost { protected void onProvidersChanged() { // Once we get the message that widget packages are updated, we need to rebind items // in AppsCustomize accordingly. - mLauncher.bindPackagesUpdated(LauncherModel.getSortedWidgetsAndShortcuts(mLauncher)); + mLauncher.bindPackagesUpdated(LauncherModel.getSortedWidgetsAndShortcuts(mLauncher, + true /* refresh */)); for (Runnable callback : mProviderChangeListeners) { callback.run(); diff --git a/src/com/android/launcher3/LauncherModel.java b/src/com/android/launcher3/LauncherModel.java index 9f976318d..c39bcee09 100644 --- a/src/com/android/launcher3/LauncherModel.java +++ b/src/com/android/launcher3/LauncherModel.java @@ -175,7 +175,6 @@ public class LauncherModel extends BroadcastReceiver // sBgWidgetProviders is the set of widget providers including custom internal widgets public static HashMap sBgWidgetProviders; - public static boolean sWidgetProvidersDirty; // sPendingPackages is a set of packages which could be on sdcard and are not available yet static final HashMap> sPendingPackages = @@ -3319,7 +3318,7 @@ public class LauncherModel extends BroadcastReceiver } final ArrayList widgetsAndShortcuts = - getSortedWidgetsAndShortcuts(context); + getSortedWidgetsAndShortcuts(context, true /* refresh */); mHandler.post(new Runnable() { @Override public void run() { @@ -3342,9 +3341,10 @@ public class LauncherModel extends BroadcastReceiver } } - public static List getWidgetProviders(Context context) { + public static List getWidgetProviders(Context context, + boolean refresh) { synchronized (sBgLock) { - if (sBgWidgetProviders != null && !sWidgetProvidersDirty) { + if (sBgWidgetProviders != null && !refresh) { return new ArrayList(sBgWidgetProviders.values()); } sBgWidgetProviders = new HashMap(); @@ -3361,7 +3361,6 @@ public class LauncherModel extends BroadcastReceiver info = new LauncherAppWidgetProviderInfo(context, widget); sBgWidgetProviders.put(info.provider, info); } - sWidgetProvidersDirty = false; return new ArrayList(sBgWidgetProviders.values()); } } @@ -3369,17 +3368,17 @@ public class LauncherModel extends BroadcastReceiver public static LauncherAppWidgetProviderInfo getProviderInfo(Context ctx, ComponentName name) { synchronized (sBgLock) { if (sBgWidgetProviders == null) { - getWidgetProviders(ctx); + getWidgetProviders(ctx, false /* refresh */); } return sBgWidgetProviders.get(name); } } - // Returns a list of ResolveInfos/AppWindowInfos in sorted order - public static ArrayList getSortedWidgetsAndShortcuts(Context context) { + // Returns a list of ResolveInfos/AppWidgetInfos in sorted order + public static ArrayList getSortedWidgetsAndShortcuts(Context context, boolean refresh) { PackageManager packageManager = context.getPackageManager(); final ArrayList widgetsAndShortcuts = new ArrayList(); - widgetsAndShortcuts.addAll(getWidgetProviders(context)); + 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)); -- cgit v1.2.3