1. ImageLoader.
A. 当需要通过网络加载大量图片,如果处理不好,会出现 OOM 错误,导致
程序奔溃,还有下载速度慢等问题。ImageLoader 避免 OOM,下载速度
快,还有很好的缓存策略。
B. 下 载 Universal-image-loader 的 jar 包 , 导 入 到 工 程 。 在
AndroidManifest.xml 中加上访问网络权限。注册全局类 Applicaon,程序
启动首先调用的是这个类来初始化。在 Applicaon 类中对 ImageLoader
进行配置。ImageLoaderConguraon 对象里有配置的参数,这里设置的
参数是全局的,对整个工程有效,比方说设置保存的文件名命名方式,
设置缓存路径等。最后通过 ImageLoader.getInstance().init(cong);初始化
设 置 。 使 用 的 时 候 直 接 ImageLoader.getInstance().displayImage(url,
imageView);即可。还可以加一个 DisplayImageOpons 参数来设置缓存,
直接作为上面函数的第三个参数即可。还可以加载图片时添加监听事件 ,
调用 loadImage 方法,传入 SimpleImageLoadingListener 监听事件,然后
重写 onLoadingComplete 方法,在加载完毕把图片显示出来。
C. 主体有三个,UI,缓存模块(memory cache 和 le cache)和数据源。首
先 UI 请求数据,使用唯一的 key 值索引 MemoryCache 中 bitmap;内存缓
存如果缓存搜索找到 bitmap,则返回数据;如果没找到就使用唯一 key
值 对 应 的 文 件 名 , 检 索 SDCard 上 的 文 件 ; 如 果 找 到 文 件 , 使 用
BitmapFactory.decode 方法,解码 Bitmap 并返回数据,同时将数据写到缓
存;如果没找到就下载图片,启动异步线程,从数据源下载数据;下载
成功,将数据同时写到硬盘和缓存,并将 bitmap 显示在 UI 中。