一、RecyclerView回收复用
回收什么?复用什么?
回收:回收即缓存。当屏幕上的一个itemView滑出屏幕(即不可见了),RecyclerView就利用回收机制,将该itemView放入内存。当其它itemView出现时,不用每次都去new一个新的itemView,而只是去onBindViewHolder绑定数据就行。
复用:复用即取缓存,从集合中去获取。新的itemView滑动出现时,首先是去缓存中拿,如果缓存中不能满足,再去执行onCreateViewHolder创建新的itemView并封装到viewHolder中去。
回收的是什么?复用的是什么?
回收和复用的都是viewHolder对象。
ViewHolder:包装view的。可以理解为RecyclerView的一个ItemView。RecyclerView 回收复用的是 ViewHolder。
什么时候回收?什么时候复用?
当一个itemView不可见时开始回收,而复用则是一个itemView由不可见到可见时开始。
二、RecyclerView四级缓存
1、mChangeScrap 与 mAttachedScrap 用来缓存还在屏幕内的 ViewHolder。
2、mCachedViews 用来缓存移除屏幕之外的 ViewHolder。
3、mViewCacheExtension 开发给用户的自定义扩展缓存,需要用户自己管理 View 的创建和缓存。
4、RecyclerViewPool:ViewHolder 缓存池