LruCache缓存分析及使用
来源:互联网 发布:巡音露卡的事件簿知乎 编辑:程序博客网 时间:2024/05/26 05:51
LruCache缓存分析及使用
内部实现原理:LinkedHashMap作为一个链表结构,在new LinkedHashMap<>(0,0.75f,true)时传入的第三个参数若为true(若为false则按照插入LinkedHashMap 的顺序进行排列)便可以将多次有过操作(put或是get)LinkedHashMap的键值对链接在LinkedHashMap的末端,对于之前的元素(即该键值对之前的键值对)进行裁剪判断(从LinkedHashMap的初始位置进行遍历做回收判断),在超过给定的内存大小或键值对的数量的条件限制下对其进行删除回收操作,已达到删除回收最近最少使用的元素的目的。
具体的步骤可以参看源码,注意sizeof方法如果不重写,则返回1,就是键值对的数量了。所以在使用中一般会像如下一样重写:
//获取系统分配给每个应用程序的最大内存int maxMemory = (int) Runtime.getRuntime().maxMemory(); //取缓存大小,一般是总内存的1/8int mCacheSize = maxMemory / 8; LruCache<String, Bitmap> mLruCache= new LruCache<String, Bitmap>(mCacheSize){ //重写此方法,来测量Bitmap的大小 @Override protected int sizeOf(String key, Bitmap value) { return value.getRowBytes() * value.getHeight(); } };//添加Bitmap到内存缓存 mLruCache.put(key, bitmap); //put进入的时候会返回当前键的旧值//从内存缓存中获取一个BitmapBitmap bitmap = mLruCache.get(key); //get 键key对应的Bitmap对象//移除缓存Bitmap bitmap = mLruCache.remove(key);//remove会返回key对应的值//回收已经remove掉的bitmap,以释放内存空间if (bitmap != null) bitmap.recycle();
阅读全文
0 0
- LruCache缓存分析及使用
- Android缓存-LruCache分析
- 缓存 LruCache 使用
- Android LruCache使用分析
- Android使用 LruCache 缓存图片
- Android使用 LruCache 缓存图片
- Android使用 LruCache 缓存图片
- Android使用 LruCache 缓存图片
- Android使用 LruCache 缓存图片
- Android使用 LruCache 缓存图片
- Android使用 LruCache 缓存图片
- Android使用 LruCache 缓存图片
- Android使用 LruCache 缓存图片
- Android使用 LruCache 缓存图片
- Android使用 LruCache 缓存图片
- Android使用 LruCache 缓存图片
- Android使用 LruCache 缓存图片
- Android使用 LruCache 缓存图片
- iframe滚动条隐藏高度自适应
- mysql自增ID起始值修改方法
- 有关EditText
- C# 转换函数 (Stream to Byte[],Byte to Image,Image to Byte[],Image缩放,Byte[] to Bitmap)
- jquery扩展--编写jQuery插件
- LruCache缓存分析及使用
- 在Windows、linux下为PHP5.6安装redis扩展
- 推荐一个nginx负载均衡文章
- c#怎么把textbox中的内容保存到txt
- ubuntu更换软件源
- 【10月新版】电子邮件控件Aspose.Email 10月新版V17.10发布 | 附下载
- google annotation笔记
- 移动端H5的Video标签无法播放在线视频的问题
- js转义