ListView与RecyclerView的区别:
ListView使用两级缓存:
1、mActiveViews用于屏幕内itemView的快速重用。
2、mScrapViews用于缓存离开屏幕的itemView。
RecyclerView使用四级缓存:
1、mChangeScrap与mAttachedScrap用于屏幕内的itemView的快速重用。
2、mCachedViews默认上限为2,即缓存屏幕外两个itemView
3、mViewCacheExtension用户自定义,一般不使用
4、RecyclerViewPool默认上限为5,也是用于缓存屏幕外的
缓存的对象不同,RecyclerView缓存的是ViewHolder,ListView缓存的是view。
RecyclerView使用了强大的分工操作,显示、排班使用的是LayoutManager处理,数据显示由Adapter处理,item上下左右动态加入绘制由itemDecoration处理,item的动画由itemAnimator处理。
RecyclerView的缓存分析:它的缓存是由内部类Recycler维护,其中一级缓存有mAttachScrap,里面放的都是当前屏幕正在显示的viewholder缓存,二级缓存是mCachedViews,里面存放的都是移出屏幕外的viewholder缓存,mRecyclerPool是RecyclerView的第三级缓存,一般用在RecyclerView嵌套RecyclerView的时候用得到,比如外层RecyclerView的item有RecyclerView,那么里面RecyclerView通过公用外层的RecyclerView的RecyclerPool来减少里面RecyclerView 的ViewHolder的创建。