diff --git a/src/com/android/launcher3/widget/LauncherWidgetHolder.java b/src/com/android/launcher3/widget/LauncherWidgetHolder.java index 2fcf8c5d54..0fb4e097be 100644 --- a/src/com/android/launcher3/widget/LauncherWidgetHolder.java +++ b/src/com/android/launcher3/widget/LauncherWidgetHolder.java @@ -349,7 +349,13 @@ public class LauncherWidgetHolder { @NonNull public final AppWidgetHostView attachViewToHostAndGetAttachedView( @NonNull LauncherAppWidgetHostView view) { - if (mViews.get(view.getAppWidgetId()) != view) { + + // Binder can also inflate placeholder widgets in case of backup-restore. Skip + // attaching such widgets + boolean isRealWidget = ((view instanceof PendingAppWidgetHostView pw) + ? pw.isDeferredWidget() : true) + && view.getAppWidgetInfo() != null; + if (isRealWidget && mViews.get(view.getAppWidgetId()) != view) { view = recycleExistingView(view); mViews.put(view.getAppWidgetId(), view); }