Universal-Image-Loader源码阅读(24)-LimitedAgeDiskCache
来源:互联网 发布:手机怎么注册淘宝网 编辑:程序博客网 时间:2024/06/17 15:08
有时间限制的硬件缓存。
增加了文件存在的最长时间,超过时间了则删除。
但是存储空间的额大小没有限制。
源码
/** * Cache which deletes files which were loaded more than defined time. Cache size is unlimited. * * @author Sergey Tarasevich (nostra13[at]gmail[dot]com) * @since 1.3.1 */public class LimitedAgeDiskCache extends BaseDiskCache {private final long maxFileAge;private final Map<File, Long> loadingDates = Collections.synchronizedMap(new HashMap<File, Long>());/** * @param cacheDir Directory for file caching * @param maxAge Max file age (in seconds). If file age will exceed this value then it'll be removed on next * treatment (and therefore be reloaded). */public LimitedAgeDiskCache(File cacheDir, long maxAge) {this(cacheDir, null, DefaultConfigurationFactory.createFileNameGenerator(), maxAge);}/** * @param cacheDir Directory for file caching * @param maxAge Max file age (in seconds). If file age will exceed this value then it'll be removed on next * treatment (and therefore be reloaded). */public LimitedAgeDiskCache(File cacheDir, File reserveCacheDir, long maxAge) {this(cacheDir, reserveCacheDir, DefaultConfigurationFactory.createFileNameGenerator(), maxAge);}/** * @param cacheDir Directory for file caching * @param reserveCacheDir null-ok; Reserve directory for file caching. It's used when the primary directory isn't available. * @param fileNameGenerator Name generator for cached files * @param maxAge Max file age (in seconds). If file age will exceed this value then it'll be removed on next * treatment (and therefore be reloaded). */public LimitedAgeDiskCache(File cacheDir, File reserveCacheDir, FileNameGenerator fileNameGenerator, long maxAge) {super(cacheDir, reserveCacheDir, fileNameGenerator);this.maxFileAge = maxAge * 1000; // to milliseconds}@Overridepublic File get(String imageUri) {//如果发现文件超时了,则删除File file = super.get(imageUri);if (file != null && file.exists()) {boolean cached;Long loadingDate = loadingDates.get(file);if (loadingDate == null) {cached = false;loadingDate = file.lastModified();} else {cached = true;}if (System.currentTimeMillis() - loadingDate > maxFileAge) {file.delete();loadingDates.remove(file);} else if (!cached) {loadingDates.put(file, loadingDate);}}return file;}@Overridepublic boolean save(String imageUri, InputStream imageStream, IoUtils.CopyListener listener) throws IOException {boolean saved = super.save(imageUri, imageStream, listener);rememberUsage(imageUri);return saved;}@Overridepublic boolean save(String imageUri, Bitmap bitmap) throws IOException {boolean saved = super.save(imageUri, bitmap);rememberUsage(imageUri);return saved;}@Overridepublic boolean remove(String imageUri) {loadingDates.remove(getFile(imageUri));return super.remove(imageUri);}@Overridepublic void clear() {super.clear();loadingDates.clear();}private void rememberUsage(String imageUri) {//更新文件最新访问时间File file = getFile(imageUri);long currentTime = System.currentTimeMillis();file.setLastModified(currentTime);loadingDates.put(file, currentTime);}}
0 0
- Universal-Image-Loader源码阅读(24)-LimitedAgeDiskCache
- Universal-Image-Loader源码阅读(35)-
- 【Android框架】Android-universal-image-loader源码阅读(一)
- Universal-Image-Loader源码阅读(1)-开篇
- Universal-Image-Loader源码阅读(2)-utils/L
- Universal-Image-Loader源码阅读(3)-utils/IoUtils
- Universal-Image-Loader源码阅读(4)-utils/ImageSizeUtils
- Universal-Image-Loader源码阅读(5)-core/iamgeaware/ImageAware
- Universal-Image-Loader源码阅读(6)-core/imageaware/ViewAware
- Universal-Image-Loader源码阅读(7)-core/imageaware/ImageViewAware
- Universal-Image-Loader源码阅读(8)-core/imageaware/NonViewAware
- Universal-Image-Loader源码阅读(9)-utils/StorageUtils
- Universal-Image-Loader源码阅读(10)-utils/MemoryCacheUtils
- Universal-Image-loader源码阅读(11)-catche/MemoryCache
- Universal-Image-Loader源码阅读(12)-cache/BaseMemoryCache
- Universal-Image-Loader源码阅读(13)-cache/LimitedMemoryCache
- Universal-Image-Loader源码阅读(14)-memory/impl/WeakMemoryCache
- Universal-Image-Loader源码阅读(15)-memory/impl/LruMemoryCache
- wordcount详解shuffle机制
- 个人唠叨
- c++ mysql
- 解决2008 server r2 安装 PostgreSQL 9.5.4报错问题
- 转载-自己做聊天机器人
- Universal-Image-Loader源码阅读(24)-LimitedAgeDiskCache
- js、jQuery获取页面中的各种宽度和高度
- [BZOJ1085][SCOI2005]骑士精神
- JS重载问题
- MTK驱动移植相关路径
- 浅析代码优化——编译器优化原理
- MySQL基础四之基本的增删改查
- The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
- Visual Studio Code 如何安装插件