Do not modify the children order while iterating the viewgroup
Bug: 69799241
Change-Id: I06a0a88aadc41cd93081a7de90e641283e79ec70
diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java
index 0db5a16..158420b 100644
--- a/src/com/android/launcher3/Workspace.java
+++ b/src/com/android/launcher3/Workspace.java
@@ -3519,17 +3519,17 @@
mRefreshPending = false;
- mapOverItems(MAP_NO_RECURSE, new ItemOperator() {
- @Override
- public boolean evaluate(ItemInfo info, View view) {
- if (view instanceof PendingAppWidgetHostView && mInfos.contains(info)) {
- mLauncher.removeItem(view, info, false /* deleteFromDb */);
- mLauncher.bindAppWidget((LauncherAppWidgetInfo) info);
- }
- // process all the shortcuts
- return false;
+ ArrayList<PendingAppWidgetHostView> views = new ArrayList<>(mInfos.size());
+ mapOverItems(MAP_NO_RECURSE, (info, view) -> {
+ if (view instanceof PendingAppWidgetHostView && mInfos.contains(info)) {
+ views.add((PendingAppWidgetHostView) view);
}
+ // process all children
+ return false;
});
+ for (PendingAppWidgetHostView view : views) {
+ view.reinflate();
+ }
}
@Override