美文网首页
RecyclerView的缓存机制

RecyclerView的缓存机制

作者: Bug制造者 | 来源:发表于2021-06-28 19:28 被阅读0次

    四级缓存

    Scrap
    Cache
    ViewCacheExtension
    RecycledViewPool

    Scrap对应ListView缓存中的ActiveView,即屏幕内的缓存数据:当列表数据发生变化时,屏幕内的数据可以直接拿来复用,无需进行数据绑定

    Cache是刚刚移除屏幕的缓存数据,默认大小是2个;当容量充满时又有新的数据加入,会根据先入先出原则,把先进入Cache的缓存数据放到下一级缓存中,然后把新的数据添加进来;Cache里面携带了ViewHolder的所有数据信息,数据可以直接拿来复用。
    注意:Cache里是根据position来寻找数据,这个position是根据第一个或者最后一个可见的item的position和用户操作行为(上拉、下拉)来计算的

    ViewCacheExtension是留给开发者自定义缓存的,通过重写getViewForPositionAndType方法,根据type和position拿到viewHolder,慎用

    RecycledViewPool默认大小是5个,与Cache不同的是,在Cache里移除的ViewHolder再存入RecyclerViewPool之前,ViewHolder的数据会被全部重置,相当于一个新的ViewHolder,RecyclerViewPool是根据itemType来获取数据的,如果没有重写getItemType方法,那么itemType就是默认的;因为viewHolder数据被重置了,所以RecyclerViewPool缓存的ViewHolder是全新的,从这里取出的数据是要重新走onBindViewHolder方法的

    源码

    相关文章

      网友评论

          本文标题:RecyclerView的缓存机制

          本文链接:https://www.haomeiwen.com/subject/gfqcultx.html