android开发常用的缓存策略详解(3)- 缓存中的时间超过我们设定的值,将其删除
来源:互联网 发布:2016禁毒网络知识竞赛 编辑:程序博客网 时间:2024/05/29 19:20
这个小编就不做过多的讲解了,还是以Universal-Image-Loader 中的LimitedAgeMemoryCache 为例进行代码的分析
提供缓存的特殊功能:如果某些缓存对象的时间超过定义值,则该对象将从缓存中删除
public class LimitedAgeMemoryCache<K, V> implements MemoryCacheAware<K, V> { private final MemoryCacheAware<K, V> cache; private final long maxAge; private final Map<K, Long> loadingDates = Collections.synchronizedMap(new HashMap<K, Long>()); /** * @param cache Wrapped memory cache * @param maxAge Max object age <b>(in seconds)</b>. If object age will exceed this value then it'll be removed from * cache on next treatment (and therefore be reloaded). */ public LimitedAgeMemoryCache(MemoryCacheAware<K, V> cache, long maxAge) { this.cache = cache; this.maxAge = maxAge * 1000; // to milliseconds } @Override public boolean put(K key, V value) { boolean putSuccesfully = cache.put(key, value); if (putSuccesfully) { loadingDates.put(key, System.currentTimeMillis()); } return putSuccesfully; } @Override public V get(K key) { Long loadingDate = loadingDates.get(key); if (loadingDate != null && System.currentTimeMillis() - loadingDate > maxAge) { cache.remove(key); loadingDates.remove(key); }//判断如果超过了预设的时间进行响应的删除 return cache.get(key); } @Override public void remove(K key) { cache.remove(key); loadingDates.remove(key); } @Override public Collection<K> keys() { return cache.keys(); } @Override public void clear() { cache.clear(); loadingDates.clear(); }
阅读全文
0 0
- android开发常用的缓存策略详解(3)- 缓存中的时间超过我们设定的值,将其删除
- android开发常用的缓存策略详解(1)- LRU缓存策略
- android开发常用的缓存策略详解(2)- 先进先出(FIFO)置换算法
- android的缓存策略
- Android开发-数据缓存策略的处理
- Android 中的缓存策略
- Android中的缓存策略
- Android中的缓存策略
- android中的缓存策略
- Android开发策略:缓存
- Android View 的缓存策略
- Android 开发中的网络下载策略 与 文件缓存策略
- Android 开发中的网络下载策略 与 文件缓存策略
- Android 开发中的网络下载策略 与 文件缓存策略
- Android开发中图片的三级缓存策略
- Android WebView缓存策略详解
- Android WebView缓存策略详解
- Android WebView缓存策略详解
- ubuntu nginx 安装
- android问题记录总结
- Python之路【第二篇】:Python基础(一)
- How Far are We from Solving Pedestrian Detection?
- echarts x轴文字显示不全(xAxis文字倾斜比较全面的3种做法值得推荐)
- android开发常用的缓存策略详解(3)- 缓存中的时间超过我们设定的值,将其删除
- [COGS2278]树黑白
- Linux&window双系统
- Java 并发编程:线程间的协作(wait/notify/sleep/yield/join)
- win7,64位系统安装Tesseract和pytesseract,用python轻松实现中文识别,超全攻略!
- git简单入门
- Tp5 学习
- 写在开始
- apache和tomcat有什么不同,为什么要整合apache 和tomcat?