summaryrefslogtreecommitdiffstats
path: root/src/com/android/launcher3/LauncherModel.java
diff options
context:
space:
mode:
authorHyunyoung Song <hyunyoungs@google.com>2015-05-22 14:49:23 -0700
committerHyunyoung Song <hyunyoungs@google.com>2015-05-22 14:49:23 -0700
commit9110d485fa12c03df3061278717efb342f1142cf (patch)
tree1dab5783efecf0f47393ef4f16ad512a607207e7 /src/com/android/launcher3/LauncherModel.java
parentdd721f86330ccc593e5bd4274c5701eff72f6521 (diff)
downloadandroid_packages_apps_Trebuchet-9110d485fa12c03df3061278717efb342f1142cf.tar.gz
android_packages_apps_Trebuchet-9110d485fa12c03df3061278717efb342f1142cf.tar.bz2
android_packages_apps_Trebuchet-9110d485fa12c03df3061278717efb342f1142cf.zip
Fix widget tray crash on screen rotation introduced by
ag/694693 b/21402209 Change-Id: Idae97fca971d90f5fbba658411491147cb023c8d
Diffstat (limited to 'src/com/android/launcher3/LauncherModel.java')
-rw-r--r--src/com/android/launcher3/LauncherModel.java12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/com/android/launcher3/LauncherModel.java b/src/com/android/launcher3/LauncherModel.java
index 500253826..e293c2a73 100644
--- a/src/com/android/launcher3/LauncherModel.java
+++ b/src/com/android/launcher3/LauncherModel.java
@@ -139,6 +139,8 @@ public class LauncherModel extends BroadcastReceiver
// < only access in worker thread >
AllAppsList mBgAllAppsList;
+ // Entire list of widgets.
+ WidgetsModel mBgWidgetsModel;
// The lock that must be acquired before referencing any static bg data structures. Unlike
// other locks, this one can generally be held long-term because we never expect any of these
@@ -2779,12 +2781,14 @@ public class LauncherModel extends BroadcastReceiver
@SuppressWarnings("unchecked")
final ArrayList<AppInfo> list
= (ArrayList<AppInfo>) mBgAllAppsList.data.clone();
+ final WidgetsModel widgetList = mBgWidgetsModel.clone();
Runnable r = new Runnable() {
public void run() {
final long t = SystemClock.uptimeMillis();
final Callbacks callbacks = tryGetCallbacks(oldCallbacks);
if (callbacks != null) {
callbacks.bindAllApplications(list);
+ callbacks.bindAllPackages(widgetList);
}
if (DEBUG_LOADERS) {
Log.d(TAG, "bound all " + list.size() + " apps from cache in "
@@ -2798,8 +2802,6 @@ public class LauncherModel extends BroadcastReceiver
} else {
mHandler.post(r);
}
- loadAndBindWidgetsAndShortcuts(mApp.getContext(), tryGetCallbacks(oldCallbacks),
- false /* refresh */);
}
private void loadAllApps() {
@@ -3342,6 +3344,7 @@ public class LauncherModel extends BroadcastReceiver
public void loadAndBindWidgetsAndShortcuts(final Context context, final Callbacks callbacks,
final boolean refresh) {
+
runOnWorkerThread(new Runnable(){
@Override
public void run() {
@@ -3355,6 +3358,7 @@ public class LauncherModel extends BroadcastReceiver
}
}
});
+ mBgWidgetsModel = model;
// update the Widget entries inside DB on the worker thread.
LauncherAppState.getInstance().getWidgetCache().removeObsoletePreviews(
model.getRawList());
@@ -3363,9 +3367,9 @@ public class LauncherModel extends BroadcastReceiver
}
/**
- * Returns a list of ResolveInfos/AppWidgetInfos.
+ * Returns a list of ResolveInfos/AppWidgetInfos.
*
- * @see #loadAndBindWidgetsAndShortcuts
+ * @see #loadAndBindWidgetsAndShortcuts
*/
private WidgetsModel createWidgetsModel(Context context, boolean refresh) {
PackageManager packageManager = context.getPackageManager();