RecyclerView 导致内存溢出卡顿问题

tech2022-09-27  108

该问题原因时RecyclerView不停调用onCreateViewHolder导致一次性创建大量ViewHolder导致内存溢出,有试过分页加载数据,这种如果快速滑动也会卡顿而且数据加载多了也会内存溢出。

这里有一篇文章讲解这种现象的原因:https://www.jianshu.com/p/d115cfaafbd4

 

总结:

问题根本原因是ViewHolder没有复用,之所以没复用是因为LayoutManager计算高度有问题导致判断条件错误,我的遇到的问题也是布局导致的如下所示。

<RelativeLayout android:id="@+id/search_result_layout" android:layout_width="wrap_content" android:layout_height="wrap_content" android:visibility="gone"> <androidx.recyclerview.widget.RecyclerView android:id="@+id/searchResultRv" android:layout_width="match_parent" android:layout_height="wrap_content"> </androidx.recyclerview.widget.RecyclerView> </RelativeLayout>

这个RelativeLayout导致了计算问题,可以去掉RelativeLayout或替换成其他view,类似的问题也可能会因为nestscrollerview等布局引起。

另一种解决办法是代码主动设置RecyclerView高度。

最新回复(0)