原文链接:http://blog.csdn.net/singwhatiwanna/article/details/17588159
前言
如果想很好地理解下面的故事,请参看我半年前写的两篇博文:android中图片的三级cache策略(内存、文件、网络)
一 和 android中左右滑屏的实现(广告位banner组件),还有昨天晚上写的android中图片的三级cache策略(内存、文件、网络)之二:内存缓存策略。
文件缓存策略
当一张图片从网络下载成功以后,这个图片会被加入内存缓存和文件缓存,对于文件缓存来说,这张图片将被以url的哈希值加cach后缀名的形式存储在SD卡上,这样,当下一次再需要同一个url的图片的时候,就不需要从网络下载了,而是直接通过url来进行查找。同时一张图片被访问时,它的最后修改时间将被更新,这样的意义在于:当SD卡空间不足的时候,将会按照最后修改时间来删除40%缓存的图片,确切来说,那些修改时间比较早的图片将会被删除。
代码展示
- public class ImageFileCache
- {
- private static final String TAG = "ImageFileCache";
- //图片缓存目录
- private static final String IMGCACHDIR = "/sdcard/ImgCach";
- //保存的cache文件宽展名
- private static final String CACHETAIL = ".cach";
- private static final int MB = 1024*1024;
- private static final int CACHE_SIZE = 1;
- //当SD卡剩余空间小于10M的时候会清理缓存
- private static final int FREE_SD_SPACE_NEEDED_TO_CACHE = 10;
- public ImageFileCache()
- {
- //清理部分文件缓存
- removeCache(IMGCACHDIR);
- }
- /**
- * 从缓存中获取图片
- */
- public Bitmap getImageFromFile(final String url)
- {
- final String path = IMGCACHDIR + "/"