根据对郭霖老师博客的学习,个人总结了图片处理中三级缓存的全部过程,然后自己封装的一个加载图片的代码框架,
对图片的优化过程包括
1、内存优化 使用LruCache
2、硬盘优化,使用DiskLruCache
3、网络读取图片,使用AsyncTask异步下载
代码中包括了文件下载,内存缓存,硬盘缓存,硬盘缓存删除 计算等接口方法,而且有详细的文档说明
部署说明:
首先,在包的根目录下,(eclipse的src下,studio的Java目录下)创建包libcore.io,
将DiskLruCache.java放在该包下
然后创建BitmapUtil包,将其他的Java文件放在该包下,
需要加载图片的时候,
假如findViewById找到ImageView的控件为iv
图片的地址是imageURL
以下几行代码就可以搞定:
iv.setTag(imageUrl);
bitmapUtil = new BitmapUtil(getApplicationContext());
bitmapUtil.display(iv, imageUrl);
其中在BitmapUtil中,可供调用的接口:
用来取消下载图片的所有任务 ,在onDestory中调用
bitmapUtil.cancelDownloadTask();
根据指定的imageUrl删除磁盘缓存的文件
remove(String imageUrl);
删除所有的磁盘缓存的图片文件
delete();
获取到硬盘缓存文件的大小(字符串)
size();
关闭掉本地图片缓存,直接从内存或者网络上查找图片:
close();