summaryrefslogtreecommitdiffstats
path: root/src/com
diff options
context:
space:
mode:
authorSunny Goyal <sunnygoyal@google.com>2017-01-13 23:00:40 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2017-01-13 23:00:40 +0000
commitf7740433ed8aebd4303b40363c1011f4351ffb88 (patch)
tree2941b7ce4533b560c8d7172d75a5b1960df8f832 /src/com
parentbde762c61837b6f446ced065e979e472bd39fca6 (diff)
parent2eb9cc48a6a0d3a1dd6c6c5f098d903de2845cab (diff)
downloadandroid_packages_apps_Trebuchet-f7740433ed8aebd4303b40363c1011f4351ffb88.tar.gz
android_packages_apps_Trebuchet-f7740433ed8aebd4303b40363c1011f4351ffb88.tar.bz2
android_packages_apps_Trebuchet-f7740433ed8aebd4303b40363c1011f4351ffb88.zip
Merge "Fixing AppWidgetsRestoredReceiver updating model on UI thread" into ub-launcher3-master
Diffstat (limited to 'src/com')
-rw-r--r--src/com/android/launcher3/AppWidgetsRestoredReceiver.java20
1 files changed, 15 insertions, 5 deletions
diff --git a/src/com/android/launcher3/AppWidgetsRestoredReceiver.java b/src/com/android/launcher3/AppWidgetsRestoredReceiver.java
index c6f1c48b9..7bc36921e 100644
--- a/src/com/android/launcher3/AppWidgetsRestoredReceiver.java
+++ b/src/com/android/launcher3/AppWidgetsRestoredReceiver.java
@@ -8,6 +8,7 @@ import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
+import android.os.Handler;
import android.util.Log;
import com.android.launcher3.LauncherSettings.Favorites;
@@ -18,12 +19,19 @@ public class AppWidgetsRestoredReceiver extends BroadcastReceiver {
private static final String TAG = "AWRestoredReceiver";
@Override
- public void onReceive(Context context, Intent intent) {
+ public void onReceive(final Context context, Intent intent) {
if (AppWidgetManager.ACTION_APPWIDGET_HOST_RESTORED.equals(intent.getAction())) {
- int[] oldIds = intent.getIntArrayExtra(AppWidgetManager.EXTRA_APPWIDGET_OLD_IDS);
- int[] newIds = intent.getIntArrayExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS);
+ final int[] oldIds = intent.getIntArrayExtra(AppWidgetManager.EXTRA_APPWIDGET_OLD_IDS);
+ final int[] newIds = intent.getIntArrayExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS);
if (oldIds.length == newIds.length) {
- restoreAppWidgetIds(context, oldIds, newIds);
+ final PendingResult asyncResult = goAsync();
+ new Handler(LauncherModel.getWorkerLooper())
+ .postAtFrontOfQueue(new Runnable() {
+ @Override
+ public void run() {
+ restoreAppWidgetIds(context, asyncResult, oldIds, newIds);
+ }
+ });
} else {
Log.e(TAG, "Invalid host restored received");
}
@@ -33,7 +41,8 @@ public class AppWidgetsRestoredReceiver extends BroadcastReceiver {
/**
* Updates the app widgets whose id has changed during the restore process.
*/
- static void restoreAppWidgetIds(Context context, int[] oldWidgetIds, int[] newWidgetIds) {
+ static void restoreAppWidgetIds(Context context, PendingResult asyncResult,
+ int[] oldWidgetIds, int[] newWidgetIds) {
final ContentResolver cr = context.getContentResolver();
final AppWidgetManager widgets = AppWidgetManager.getInstance(context);
AppWidgetHost appWidgetHost = new AppWidgetHost(context, Launcher.APPWIDGET_HOST_ID);
@@ -76,5 +85,6 @@ public class AppWidgetsRestoredReceiver extends BroadcastReceiver {
if (app != null) {
app.reloadWorkspace();
}
+ asyncResult.finish();
}
}