diff options
author | Sunny Goyal <sunnygoyal@google.com> | 2017-01-13 23:00:40 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2017-01-13 23:00:40 +0000 |
commit | f7740433ed8aebd4303b40363c1011f4351ffb88 (patch) | |
tree | 2941b7ce4533b560c8d7172d75a5b1960df8f832 /src/com | |
parent | bde762c61837b6f446ced065e979e472bd39fca6 (diff) | |
parent | 2eb9cc48a6a0d3a1dd6c6c5f098d903de2845cab (diff) | |
download | android_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.java | 20 |
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(); } } |