OSDN Git Service

Remove duplicate calls to getSortedWidgetsAndShortcuts
authorHyunyoung Song <hyunyoungs@google.com>
Tue, 21 Apr 2015 03:40:03 +0000 (20:40 -0700)
committerHyunyoung Song <hyunyoungs@google.com>
Tue, 21 Apr 2015 23:07:30 +0000 (16:07 -0700)
Note: this is a manual CP of the CL that was submitted to ub-launcher3-almonte

b/19904873

Change-Id: I2e56bc0c7524caa2ef3c5fb00f35cb032cd1860b

src/com/android/launcher3/LauncherAppWidgetHost.java
src/com/android/launcher3/LauncherModel.java

index 583f85a..e32e0d9 100644 (file)
@@ -79,11 +79,7 @@ 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,
-                true /* refresh */));
-
+        mLauncher.getModel().loadAndBindWidgetsAndShortcuts(mLauncher, mLauncher);
         if (!mProviderChangeListeners.isEmpty()) {
             for (Runnable callback : new ArrayList<>(mProviderChangeListeners)) {
                 callback.run();
index f7df6bc..424f649 100644 (file)
@@ -38,6 +38,7 @@ import android.database.Cursor;
 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 @@ public class LauncherModel extends BroadcastReceiver
                     }
                 });
             }
-
-            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 class LauncherModel extends BroadcastReceiver
         }
     }
 
+    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();