Universal-Image-Loader源码阅读(20)-memory/impl/LRULimitedMemoryCache
来源:互联网 发布:毕加索美工钢笔推荐 编辑:程序博客网 时间:2024/05/21 07:49
采用了LRU策略的LimitedMemoryCache
源码:
/** * Limited {@link Bitmap bitmap} cache. Provides {@link Bitmap bitmaps} storing. Size of all stored bitmaps will not to * exceed size limit. When cache reaches limit size then the least recently used bitmap is deleted from cache.<br /> * <br /> * <b>NOTE:</b> This cache uses strong and weak references for stored Bitmaps. Strong references - for limited count of * Bitmaps (depends on cache size), weak references - for all other cached Bitmaps. * * @author Sergey Tarasevich (nostra13[at]gmail[dot]com) * @since 1.3.0 */public class LRULimitedMemoryCache extends LimitedMemoryCache {private static final int INITIAL_CAPACITY = 10;private static final float LOAD_FACTOR = 1.1f;/** Cache providing Least-Recently-Used logic */private final Map<String, Bitmap> lruCache = Collections.synchronizedMap(new LinkedHashMap<String, Bitmap>(INITIAL_CAPACITY, LOAD_FACTOR, true));/** @param maxSize Maximum sum of the sizes of the Bitmaps in this cache */public LRULimitedMemoryCache(int maxSize) {super(maxSize);}@Overridepublic boolean put(String key, Bitmap value) {if (super.put(key, value)) {lruCache.put(key, value);return true;} else {return false;}}@Overridepublic Bitmap get(String key) {lruCache.get(key); // call "get" for LRU logicreturn super.get(key);}@Overridepublic Bitmap remove(String key) {lruCache.remove(key);return super.remove(key);}@Overridepublic void clear() {lruCache.clear();super.clear();}@Overrideprotected int getSize(Bitmap value) {return value.getRowBytes() * value.getHeight();}@Overrideprotected Bitmap removeNext() {//关键方法,删除最后的,就是最近最少使用的Bitmap mostLongUsedValue = null;synchronized (lruCache) {Iterator<Entry<String, Bitmap>> it = lruCache.entrySet().iterator();if (it.hasNext()) {Entry<String, Bitmap> entry = it.next();mostLongUsedValue = entry.getValue();it.remove();}}return mostLongUsedValue;}@Overrideprotected Reference<Bitmap> createReference(Bitmap value) {return new WeakReference<Bitmap>(value);}}
0 0
- Universal-Image-Loader源码阅读(20)-memory/impl/LRULimitedMemoryCache
- Universal-Image-Loader源码阅读(14)-memory/impl/WeakMemoryCache
- Universal-Image-Loader源码阅读(15)-memory/impl/LruMemoryCache
- Universal-Image-Loader源码阅读(16)-memory/impl/FuzzyKeyMemoryCache
- Universal-Image-Loader源码阅读(18)-memory/impl/FIFOLimitedMemoryCache
- Universal-Image-Loader源码阅读(19)-memory/impl/LargestLimitedMemoryCache
- Universal-Image-Loader源码阅读(17)-memory/impl/LimitedAgeMemoryCache
- Universal-Image-Loader源码阅读(21)-memory总结
- 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
- MySQL配置参数详解
- Python-线程后篇生肉
- js返回上一页并刷新
- css继承、层叠、特殊
- poj 1873 The Fortified Forest
- Universal-Image-Loader源码阅读(20)-memory/impl/LRULimitedMemoryCache
- 一个基础的文件读写(复习)
- JAVA并发编程学习笔记之AQS源码分析(共享与互斥)(r)
- [Python]网络爬虫(六):一个简单的百度贴吧的小爬虫
- linux下修改mysql的root密码
- Servlet实现文件上传,可多文件上传
- 浮动元素问题
- PCI Express
- javascript 事件