当调用notifyItemChanged时,RecyclerView将会重新调用相应位置的onBindViewHolder方法来更新item的数据。如果RecyclerView中的item数据发生了频繁变化,就会导致RecyclerView频繁地进行重绘,从而增加了内存的使用。
解决这个问题的方法有两种:
-
减少notifyItemChanged的调用次数,尽量在数据变化后一次性更新多个item,而不是频繁地更新单个item。
-
使用DiffUtil来计算RecyclerView中item数据的变化,然后批量更新变化的item。DiffUtil可以有效地减少notifyItemChanged的调用次数,从而降低内存的使用。
-
RecyclerView重新绘制前清除之前绘制产生的Native内存:
//自定义RecyclerView,重写onDetachedFromWindow方法
public class MyRecyclerView extends RecyclerView {
public MyRecyclerView