From 2d58471e8d3da621e209cec58a43d159778f8a0e Mon Sep 17 00:00:00 2001 From: Winson Chung Date: Fri, 15 May 2015 15:15:11 -0700 Subject: [PATCH] Reducing calls to onCreateViewHolder due to animating children. Bug 21133230 Change-Id: Ib5be0766d1ea56976195e33526d7595a16672eef --- src/com/android/launcher3/widget/WidgetCell.java | 1 + src/com/android/launcher3/widget/WidgetsListAdapter.java | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/src/com/android/launcher3/widget/WidgetCell.java b/src/com/android/launcher3/widget/WidgetCell.java index a34e716072..e3eb76c257 100644 --- a/src/com/android/launcher3/widget/WidgetCell.java +++ b/src/com/android/launcher3/widget/WidgetCell.java @@ -118,6 +118,7 @@ public class WidgetCell extends LinearLayout implements OnLayoutChangeListener { if (DEBUG) { Log.d(TAG, "reset called on:" + mWidgetName.getText()); } + mWidgetImage.animate().cancel(); mWidgetImage.setImageDrawable(null); mWidgetName.setText(null); mWidgetDims.setText(null); diff --git a/src/com/android/launcher3/widget/WidgetsListAdapter.java b/src/com/android/launcher3/widget/WidgetsListAdapter.java index b8124d6e39..397d177990 100644 --- a/src/com/android/launcher3/widget/WidgetsListAdapter.java +++ b/src/com/android/launcher3/widget/WidgetsListAdapter.java @@ -185,6 +185,15 @@ public class WidgetsListAdapter extends Adapter { } } + @Override + public boolean onFailedToRecycleView(WidgetsRowViewHolder holder) { + // If child views are animating, then the RecyclerView may choose not to recycle the view, + // causing extraneous onCreateViewHolder() calls. It is safe in this case to continue + // recycling this view, and take care in onViewRecycled() to cancel any existing + // animations. + return true; + } + @Override public long getItemId(int pos) { return pos;