diff options
author | Sunny Goyal <sunnygoyal@google.com> | 2017-01-10 15:29:18 -0800 |
---|---|---|
committer | Sunny Goyal <sunnygoyal@google.com> | 2017-01-11 14:15:42 -0800 |
commit | 2eb9cc48a6a0d3a1dd6c6c5f098d903de2845cab (patch) | |
tree | 2693d4c3e59ac4c2f969d3f989b741587fa8588f /src/com/android/launcher3/AppWidgetsRestoredReceiver.java | |
parent | 3e9be43b6ea75c8b82b57aa58508a0c3e8e1d721 (diff) | |
download | android_packages_apps_Trebuchet-2eb9cc48a6a0d3a1dd6c6c5f098d903de2845cab.tar.gz android_packages_apps_Trebuchet-2eb9cc48a6a0d3a1dd6c6c5f098d903de2845cab.tar.bz2 android_packages_apps_Trebuchet-2eb9cc48a6a0d3a1dd6c6c5f098d903de2845cab.zip |
Fixing AppWidgetsRestoredReceiver updating model on UI thread
Bug: 34203314
Change-Id: If2c149f353109350e45e581a654956bec78bce96
Diffstat (limited to 'src/com/android/launcher3/AppWidgetsRestoredReceiver.java')
-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(); } } |