Fix launcher crash after restore with some specific widgets.

The internal implementation of PendingAppWidgetHostView#getDefaultViews
uses the same view across updates which causes the exception in
AppWidgetHostView#applyContent when it tries to call addView() because
the view has already been added to its parent view in previous iteration.

Bug: 151901506
Test: manual
Change-Id: Ieccec814ac514e592d0d4f196b60ba89aec0d661
This commit is contained in:
Pinyao Ting
2020-07-20 11:54:38 -07:00
parent 4527d2dbb2
commit 8dae83ee9b
@@ -52,7 +52,6 @@ public class PendingAppWidgetHostView extends LauncherAppWidgetHostView
private static final float MIN_SATUNATION = 0.7f;
private final Rect mRect = new Rect();
private View mDefaultView;
private OnClickListener mClickListener;
private final LauncherAppWidgetInfo mInfo;
private final int mStartState;
@@ -111,12 +110,11 @@ public class PendingAppWidgetHostView extends LauncherAppWidgetHostView
@Override
protected View getDefaultView() {
if (mDefaultView == null) {
mDefaultView = mInflater.inflate(R.layout.appwidget_not_ready, this, false);
mDefaultView.setOnClickListener(this);
applyState();
}
return mDefaultView;
View defaultView = mInflater.inflate(R.layout.appwidget_not_ready, this, false);
defaultView.setOnClickListener(this);
applyState();
invalidate();
return defaultView;
}
@Override