【Android】ListView RecyclerView

https://www.cnblogs.com/ganchuanpu/p/8258459.html
ListView基本已经弃用
ListView 使用主要注意几个优化点

1.convertView不能重复创建
2.每次不需要重新findViewByID
3.高度固定
4.分页加载

RecyclerView并不处理布局,只处理资源的回收,将资源分为几级缓存进行复用,理解RecyclerView从两个方向入手,一是回收,二是布局。
回收本身由RecycerView实现,逐层降级,如果最后也没找到,会调用onCreateViewHolder,如果已有这个View会直接取出来,如果数据改变了,就调用onBindViewHolder。

LayoutManager主要处理两个问题,一是OnLayoutChildren,二是处理滑动时的取出和释放资源。

【Android】ListView RecyclerView_第1张图片

ListView和RecyclerView缓存机制基本一致:

1). mActiveViews和mAttachedScrap功能相似,意义在于快速重用屏幕上可见的列表项ItemView,而不需要重新createView和bindView;
2). mScrapView和mCachedViews + mReyclerViewPool功能相似,意义在于缓存离开屏幕的ItemView,目的是让即将进入屏幕的ItemView重用.
3). RecyclerView的优势在于a.mCacheViews的使用,可以做到屏幕外的列表项ItemView进入屏幕内时也无须bindView快速重用;b.mRecyclerPool可以供多个RecyclerView共同使用,在特定场景下,如viewpaper+多个列表页下有优势.客观来说,RecyclerView在特定场景下对ListView的缓存机制做了补强和完善。

缓存不同:

1). RecyclerView缓存RecyclerView.ViewHolder,抽象可理解为:
View + ViewHolder(避免每次createView时调用findViewById) + flag(标识状态);
2). ListView缓存View。

你可能感兴趣的:(android)