您的位置:首页 > 其它

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>
 
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: