RecycleView和ListView的缓存机制
2021-06-23 本文已影响0人
Owen270
1.ListView二级缓存(AbsListView.RecycleBin)
1.1.mActivieViews 【View[]】 缓存屏幕内的itemView
createView x
bindView x
1.2.mScrapViews 【View[]】 缓存离开屏幕的itemView
createView x
bindView √
1.3.缓存读取机制如下图:

2.RecycleView 四级缓存
2.1.mAttachedScrap 【ArrayList<View>】 缓存屏幕内的ViewHolder
createView x
bindView x
2.2.mCacheViews 【ArrayList<View>】 缓存屏幕外的ViewHolder,默认上限2个
createView x
bindView x
2.3.ViewCacheExtension 不直接使用,一般需要用户自定义
2.4.RecycleViewPool 默认上线为5个,技术上可以实现多个
RecycleView复用同一个Pool.
createView x
bindView √
2.5.缓存读取机制如下图

3.Recycleview缓存机制的优势
3.1.mCahceView的使用,可以做到屏幕外的itemView进入屏幕时,不需要bindView就可以快速复用。
3.2.在特定的场景下,比如ViewPager+多个列表页,可以对RecycleViewPool进行复用
4.ListView和RecycleView的区别
ListView 与 RecyclerView区别总结 (juejin.cn)