Remove duplicate calls to getSortedWidgetsAndShortcuts
b/19904873

Change-Id: I2e56bc0c7524caa2ef3c5fb00f35cb032cd1860b
diff --git a/src/com/android/launcher3/LauncherAppWidgetHost.java b/src/com/android/launcher3/LauncherAppWidgetHost.java
index a28fd25..55596e5 100644
--- a/src/com/android/launcher3/LauncherAppWidgetHost.java
+++ b/src/com/android/launcher3/LauncherAppWidgetHost.java
@@ -81,9 +81,7 @@
     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,
-                true /* refresh */));
-
+        mLauncher.getModel().loadAndBindWidgetsAndShortcuts(mLauncher, mLauncher);
         for (Runnable callback : mProviderChangeListeners) {
             callback.run();
         }
diff --git a/src/com/android/launcher3/LauncherModel.java b/src/com/android/launcher3/LauncherModel.java
index b194961..2e5d4e9 100644
--- a/src/com/android/launcher3/LauncherModel.java
+++ b/src/com/android/launcher3/LauncherModel.java
@@ -39,6 +39,7 @@
 import android.graphics.BitmapFactory;
 import android.graphics.Rect;
 import android.net.Uri;
+import android.os.Build;
 import android.os.Environment;
 import android.os.Handler;
 import android.os.HandlerThread;
@@ -3320,19 +3321,9 @@
                     }
                 });
             }
-
-            final ArrayList<Object> widgetsAndShortcuts =
-                    getSortedWidgetsAndShortcuts(context, true /* refresh */);
-            mHandler.post(new Runnable() {
-                @Override
-                public void run() {
-                    Callbacks cb = getCallback();
-                    if (callbacks == cb && cb != null) {
-                        callbacks.bindPackagesUpdated(widgetsAndShortcuts);
-                    }
-                }
-            });
-
+            if (Build.VERSION.SDK_INT < 17) {
+                loadAndBindWidgetsAndShortcuts(context, callbacks);
+            }
             // Write all the logs to disk
             mHandler.post(new Runnable() {
                 public void run() {
@@ -3381,6 +3372,25 @@
         }
     }
 
+    public void loadAndBindWidgetsAndShortcuts(final Context context, final Callbacks callbacks) {
+        runOnWorkerThread(new Runnable(){
+            @Override
+            public void run() {
+                final ArrayList<Object> list =
+                        getSortedWidgetsAndShortcuts(context, true /* refresh */);
+                mHandler.post(new Runnable() {
+                    @Override
+                    public void run() {
+                        Callbacks cb = getCallback();
+                        if (callbacks == cb && cb != null) {
+                            callbacks.bindPackagesUpdated(list);
+                        }
+                    }
+                });
+            }
+        });
+    }
+
     // Returns a list of ResolveInfos/AppWidgetInfos in sorted order
     public static ArrayList<Object> getSortedWidgetsAndShortcuts(Context context, boolean refresh) {
         PackageManager packageManager = context.getPackageManager();