深入理解Android RecyclerView的缓存机制
Posted xiangzhihong8
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深入理解Android RecyclerView的缓存机制相关的知识,希望对你有一定的参考价值。
我们知道,RecyclerView在大量数据时依然可以丝滑般顺畅的滑动,那它究竟是怎么实现的呢,而RecyclerView之所以好用得益于它优秀的缓存机制。
我们知道,RecyclerView本身是一个ViewGroup,因此在滑动时就避免不了添加或移除子View(子View通过RecyclerView#Adapter中的onCreateViewHolder创建),如果每次使用子View都要去重新创建,肯定会影响滑动的流畅性,所以RecyclerView通过Recycler来缓存的是ViewHolder(内部包含子View),这样在滑动时可以复用子View,某些条件下还可以复用子View绑定的数据。所以本质上来说,RecyclerView之所以能够实现顺畅的滑动效果,是因为缓存机制,因为缓存减少了重复绘制View和绑定数据的时间,从而提高了滑动时的性能。
一、缓存
1.1、四级缓存
Recycler缓存ViewHolder对象有4个等级,优先级从高到底依次为:
- mAttachedScrap:缓存屏幕中可见范围的ViewHolder;
- mCachedViews:缓存滑动时即将与RecyclerView分离的ViewHolder,默认最大2个;
- ViewCacheExtension:自定义实现的缓存;
- RecycledViewPool :ViewHolder缓存池,可以支持不同的ViewType;
1.1.1 mAttachedScrap
mAttachedScrap存储的是当前屏幕中的
以上是关于深入理解Android RecyclerView的缓存机制的主要内容,如果未能解决你的问题,请参考以下文章
Android开发之漫漫长途 XIV——RecyclerView