RecyclerView+ImageLoader图片列表的加载与展示【从listview加载图片性能优化引出的解决方法】
2016-06-22 22:19
761 查看
RecyclerView+ImageLoader图片列表的加载与展示
一、问题的引出——listview性能优化
1.ListView的就性能优化原理
(1)尽可能少去执行Layou的Inflate。【因为,渲染xml文件,操作依旧需要彻底包含整个xml代码树,而且还要实例化相应的View】【在Android中,ListView通过回收机制解决了这个问题】(2)只渲染和布置那些在可视范围内,或者即将出现在可视范围内的Item【ListView的View回收机制,也将其实现了实现了】2.ListView的View回收机制
ListView会将那些在可视范围上面或者下面的View加入到回收池中。下图展示当你下滑列表时ListView的View回收机制所做的工作。3.ListView性能优化小贴士核心——如何让Adapter的getView()变的尽可能的轻巧
在有了ListView对View的动态回收利用之后,所有对ListView性能优化都集中到了使得getView()变得更加轻巧上来了。(1)【使用可回收的View】使用可回收的View,即判断convertView是否为null,若不为null可以直接利用以前的View,将数据填充的里面,而不用新Inflate一个View。(2)【使用ViewHolder】使用ViewHolder保存View中的子View的引用,而不是使用findViewById()去寻找。因为这个方法会递归整个View树,也比较耗时,在频繁的动态调用的情况下。(3)【异步加载】耗时的图片加载任务使用异步线程实现(4)【交互意识】当滑动的时候不要去加载图片,只有当滑动停下来的时候才去加载图片。二、问题的解决
1.使用RecyclerView+ImageLoader
(1)RecyclerView是对ListView的升级和优化,其直接封装了ViewHolder。这样就解决了问题【使用可回收的View】和【使用ViewHolder】(2)ImageLoader是一个异步多线程并拥有缓存能力的图片加载库,解决了问题【异步加载】(3)通过设置RecyclerView中的setOnScrollListener(OnScrollListener listener)实现RecyclerView中的抽象类
OnScrollListener中的
onScrollStateChanged方法去判断滑动的状态,来控制ImageLoader的resume和pause来实现只有滑动在停下来的时候才去加载图片。
解决了问题【交互意识】
</pre>
相关文章推荐
- 【转】自定义UITableViewCell控件阻挡回调不到didSelectRowAtIndexPath的解决办法
- Pearson相关系数公式的四种形式及Python代码实现
- 【63】关系数据库常用的sql语句总结
- 【63】关系数据库常用的sql语句总结
- 【63】关系数据库常用的sql语句总结
- 【转】iOS 通过xib自定义UITableViewCell【原创】
- [Python] from scipy import sparse 报 DLL load failed:找不到指定模块错误
- 父子进程执行流(题目解析)
- Eclipse console 中文乱码解决
- 二进制转换
- android开发教程之listview使用方法
- Java之IO
- vmware虚拟机从A点恢复到之前的snapshot点之后,A点的数据还可以拿到
- 链表学习(C语言实现)
- 《人月神话》阅读笔记03
- 人月神话阅读笔记08
- iOS开发多线程篇—线程的状态
- Spring IOC容器实现
- 【Objective-C】04-第一个OC程序解析
- 4 瞬时响应:网站的高性能架构