Android第三方资源使用之ImageCache

本文介绍了Android第三方库ImageCache的使用,它是一个轻量级的图片缓存库,提供简单易用的接口,支持多种缓存策略,有效解决ListView图片错乱、重复等问题,提高用户体验。
摘要由CSDN通过智能技术生成
转载请注明出处:王亟亟的大牛之路

引用库的原作者Git:https://github.com/Trinea

现在很多需要动态呈现的View都使用到了H5和WebView,而有些使用的还是传统的异步加载操作,今天写的是传统的View的实现(H5的可以看这篇文章:http://blog.csdn.net/ddwhan0123/article/details/49683799

我们常用的诸如ImageLoader Picasso 都有类似的效果,今天上的是国内大牛Trinea的ImageCache,那为什么用他的这个呢?

个人觉得他更轻量级,效果简单明了,一些衍生和伸展性做的也还不错。


一.说之前,还是说一下一些比较重要的知识点。(我们不生产知识,我们只是知识的搬运工)

缓存:java的对象创建需要分配资源较耗费时间,加上创建的对象越多会造成越频繁的gc影响系统响应。主要使用单例模式、缓存(图片缓存、线程池、View缓存、IO缓存、消息缓存、通知栏notification缓存)及其他方式减少对象创建。

然后缓存中,又图片缓存、线程池、View缓存、IO缓存、消息缓存、通知栏notification缓存等。(这不是我们主要讲的内容,不知道可以自己Google,这里只是例举下)

那么,在实用场景下会有哪些常见的异步加载问题呢?

a. 行item图片显示重复
这个显示重复是指当前行item显示了之前某行item的图片。
比如ListView滑动到第2行会异步加载某个图片,但是加载很慢,加载过程中listView已经滑动到了第14行,且滑动过程中该图片加载结束,第2行已不在屏幕内,根据上面介绍的缓存原理,第2行的view可能被第14行复用,这样我们看到的就是第14行显示了本该属于第2行的图片,造成显示重复。

b. 行item图片显示错乱
这个显示错乱是指某行item显示了不属于该行item的图片。
比如ListView滑动到第2行会异步加载某个图片,但是加载很慢,加载过程中listView已经滑动到了第14行,第2行已不在屏幕内,根据上面介绍的缓存原理,第2行的view可能被第14行复用,第14行显示了第2行的View,这时之前的图片加载结束,就会显示在第14行,造成错乱。

c. 行item图片显示闪烁
上面b的情况,第14行图片又很快加载结束,所以我们看到第14行先显示了第2行的图片,立马又显示了自己的图片进行覆盖造成闪烁错乱

因为,如果我们用 Back键回到上一个Activity再进来的时候是不是还要重新加载?或者我第一次加载存到本地,第二次再读本地IO?所以,缓存成为提高用户体验和节约性能一个很好的途径。


二.ImageCache

ImageCache有什么优势呢?

(1). 使用简单 (2). 轻松获取及预取新图片 (3). 包含二级缓存 (4). 可选择多种缓存算法(FIFO、LIFO、LRU、MRU、LFU、MFU等13种)或自定义缓存算法 (5). 可方便的保存及初始化恢复数据 (6). 支持文件sd卡保存及自定义文件名规则 (7). 省流量性能佳(有且仅有一个线程获取图片) (8). 支持不同类型网络处理 (9). 可根据系统配置初始化缓存 (10). 扩展性强 (11). 支持等待队列 (12). 包含map的大多数接口。

-1.使用:

a.初始化一个ImageCache 对象

public static final ImageCache IMAGE_CACHE = CacheManager.getImageCache();

b.需要加载图片的地方调用get(String imageUrl, View view)异步加载图片

IMAGE_CACHE.get(imageUrl, imageView);

就是辣么简单,效果就能达到。

当然,对缓存,线程等等

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值