RecyclerView的二级缓存 View缓存的两种方式
2016-12-11 13:46
267 查看
在
当我们去获取一个新的
前面我们了解到,
在什么样的场景中使用
而使用Remove的方式,是当View不在屏幕中有任何显示的时候,你需要将它Remove掉,以备后面循环利用。可以通过函数
RecyclerView中,有两个缓存:
Scrap和
Recycle。
Scrap中文就是废料的意思,
Recycle对应是回收的意思。这两个缓存有什么作用呢?首先
Scrap缓存是指里面缓存的
View是接下来需要用到的,即里面的绑定的数据无需更改,可以直接拿来用的,是一个轻量级的缓存集合;而
Recycle的缓存的
View为里面的数据需要重新绑定,即需要通过
Adapter重新绑定数据。关于这两个缓存的使用场景,下一节详细介绍。
当我们去获取一个新的
View时,
RecyclerView首先去检查
Scrap缓存是否有对应的
position的
View,如果有,则直接拿出来可以直接用,不用去重新绑定数据;如果没有,则从
Recycle缓存中取,并且会回调
Adapter的
onBindViewHolder方法(当然了,如果
Recycle缓存为空,还会调用
onCreateViewHolder方法),最后再将绑定好新数据的View返回。
前面我们了解到,
RecyclerView中有二级缓存,我们可以自己选择将
View缓存到哪里。我们有两种选择的方式:
Detach和
Remove。
Detach的
View放在
Scrap缓存中,
Remove掉的
View放在Recycle缓存中;那我们应该如何去选择呢?
在什么样的场景中使用
Detach呢?主要是在我们的代码执行结束之前,我们需要反复去将
View移除并且马上又要添加进去时,选择
Datach方式,比如:当我们对View进行重新排序的时候,可以选择Detach,因为屏幕上显示的就是这些position对应的View,我们并不需要重新去绑定数据,这明显可以提高效率。使用
Detach方式可以通过函数
detachAndScrapView()实现。
而使用Remove的方式,是当View不在屏幕中有任何显示的时候,你需要将它Remove掉,以备后面循环利用。可以通过函数
removeAndRecycleView()实现。
相关文章推荐
- 用RecyclerView实现新闻列表页,包括头部的图片轮播,两种Item显示方式,下拉刷新和上拉加载以及限制列表的加载条目数
- Android RecyclerView粘性头部的两种实现方式
- ListView、RecyclerView 两种方式实现聊天界面支持文字、表情、图片和语音信息,支持下拉加载更多
- RecyclerView点击事件OnItemClick的两种实现方式
- hibernate配置二级缓存的两种方式
- Android ListView、RecyclerView两种方式实现聊天界面搭建
- RecyclerView(一)点击事件的两种方式
- RecycleView设置点击的两种方式:adapter中的onBindViewHolder(VH,int)方法中进行;实现RecyclerView的addonItemTouchListerner()
- 两种缓存Bitmap的方式
- 图片异步加载和图片缓存的两种方式
- 通过navigationController切换view的两种方式
- ImageView设置边框的两种方式
- 高效地显示Bitmap图片 3 - 两种缓存Bitmap的方式
- hibernate二级缓存(包括注解方式)
- textView 添加超链接(两种实现方式) 详细出处参考:http://www.jb51.net/article/38160.htm
- 两种缓存Bitmap的方式
- ImageView设置边框的两种方式
- 两种方式 让客户端 缓存失效
- Android:如何在ListView中嵌套ListView (如何实现二级目录结构?)的两种实现方式
- 通过navigationController切换view的两种方式