Ensure the view being recycled has been inflated before.

Fix: 183061275
Test: atest CtsWidgetTestCases:RemoteViewsTest
Change-Id: I346fd894bea3ca37ab75871025fa0a92433d061c
This commit is contained in:
Pierre Barbier de Reuille
2021-03-18 09:07:28 +00:00
parent 3be701e767
commit 54deae4c69

View File

@@ -5339,9 +5339,13 @@ public class RemoteViews implements Parcelable, Filter {
/** @hide */
public boolean canRecycleView(View v) {
Integer previousLayout = (Integer) v.getTag(R.id.widget_frame);
if (previousLayout == null) {
return false;
}
Integer overrideIdTag = (Integer) v.getTag(R.id.remote_views_override_id);
int overrideId = overrideIdTag == null ? View.NO_ID : overrideIdTag;
return (Integer) v.getTag(R.id.widget_frame) == getLayoutId() && mViewId == overrideId;
return previousLayout == getLayoutId() && mViewId == overrideId;
}
// Note: topLevel should be true only for calls on the topLevel RemoteViews, internal calls