summaryrefslogtreecommitdiff
path: root/src/com/android/launcher3/AppWidgetsRestoredReceiver.java
diff options
context:
space:
mode:
authorSunny Goyal <sunnygoyal@google.com>2017-01-10 15:29:18 -0800
committerSunny Goyal <sunnygoyal@google.com>2017-01-11 14:15:42 -0800
commit2eb9cc48a6a0d3a1dd6c6c5f098d903de2845cab (patch)
tree2693d4c3e59ac4c2f969d3f989b741587fa8588f /src/com/android/launcher3/AppWidgetsRestoredReceiver.java
parent3e9be43b6ea75c8b82b57aa58508a0c3e8e1d721 (diff)
downloadLauncher3-2eb9cc48a6a0d3a1dd6c6c5f098d903de2845cab.tar.gz
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.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 c6f1c48b90..7bc36921e2 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();
}
}