图片异步下载与本地缓存

来源:互联网 发布:杀人怎样的体验知乎 编辑:程序博客网 时间:2024/06/16 00:04

远程图片下载需要解决的问题?

(1)图片资源往往会消耗比较大的流量。

(2)加载速度慢。

上面两个问题解决不好会让客户崩溃。

解决方法:

(1)异步下载

(2)本地缓存

异步下载?

启动一个异步线程来获取资源,完成后通过Handler机制发送消息,并在UI线程中处理消息。


本地缓存?

(1)内存缓存。将获取到的数据存取到Map集合中,如果再次引用此数据,就直接从Map集合中获取。Map<String,Bitmap> map 大数据量map强引用容易导致内存溢出。

(2)SdCard缓存。判断sd卡中是否存在,如果存在,直接读取sd卡中的数据,如果不存在从网上下载,然后保存到sd卡中。

(3)/data/data/package/ 缓存。

如何避免map导致的内存溢出?

 softreference弱引用,jvm会尽量长时间的保留这个对象,当jvm内存不足的时候,就会回收 softreference里面的对象。