Remove duplicate calls to getSortedWidgetsAndShortcuts

Note: this is a manual CP of the CL that was submitted to ub-launcher3-almonte

b/19904873

Change-Id: I2e56bc0c7524caa2ef3c5fb00f35cb032cd1860b
diff --git a/src/com/android/launcher3/LauncherModel.java b/src/com/android/launcher3/LauncherModel.java
index f7df6bc..424f649 100644
--- a/src/com/android/launcher3/LauncherModel.java
+++ b/src/com/android/launcher3/LauncherModel.java
@@ -38,6 +38,7 @@
 import android.graphics.Bitmap;
 import android.graphics.Rect;
 import android.net.Uri;
+import android.os.Build;
 import android.os.Environment;
 import android.os.Handler;
 import android.os.HandlerThread;
@@ -3219,19 +3220,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() {
@@ -3280,6 +3271,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();