diff options
Diffstat (limited to 'src/com/android/launcher3/LauncherModel.java')
-rw-r--r-- | src/com/android/launcher3/LauncherModel.java | 36 |
1 files changed, 23 insertions, 13 deletions
diff --git a/src/com/android/launcher3/LauncherModel.java b/src/com/android/launcher3/LauncherModel.java index 353de130d..e5561e219 100644 --- a/src/com/android/launcher3/LauncherModel.java +++ b/src/com/android/launcher3/LauncherModel.java @@ -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; @@ -3229,19 +3230,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() { @@ -3290,6 +3281,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(); |