Android - 简单解释RecyclerView的四级缓存

RecyclerView缓存的是ViewHolder,即每个ItemView

  1. ItemView的加载
    因为每个ItemView由xml加载成为View (onCreateViewHolder方法) ,是一个深度遍历的过程,并且是通过反射来获取的每个View,这其实是一个耗时的操作。如果每个子ItemView都通过这种方法去加载,是非常不合适滴。所以需要缓存。

  2. 四级缓存
    界面上的View缓存 :mAttachedScrap
    刚刚移出屏幕的缓存: mCachedViews
    自定义缓存:mViewCacheExtension
    缓存池:mRecyclerPool

  • mAttachedScrap在屏幕中的缓存,用于数据刷新时,不需要重新加载子ItemView,直接复用;

  • mCachedViews刚刚移出屏幕的缓存,最大容量为2,通过position来保存,数据不变,直接复用;滑动时,该缓存一边add,一边remove。

  • mViewCacheExtension自定义缓存,基本用不上

  • mRecyclerPoor保存第二级缓存中保存不了的ItemView。通过itemType来保存,每种itemType可以保存5个ItemView。具体缓存结构如下图:

    RecycledViewPool.png

你可能感兴趣的:(Android - 简单解释RecyclerView的四级缓存)