三级缓存之LruCache 学习
来源:互联网 发布:9.3.3软件源 编辑:程序博客网 时间:2024/06/05 09:52
google在安卓2.3.x 之后修改了软引用的机制,而推荐使用LruCache
LruCache 可以看成是一个map集合,可以自动删除对象,在构造的时候会指定尺寸,超出尺寸的会删除
既然有尺寸,但也不能写死,这个大小就要和内存有关;
获取内存大小
Runtime runtime = Runtime.getRuntime();
runtime有三个参数,分别是
runtime.freeMemory(); 已经分配的 减去 已经使用的
runtime.totalMemory(); 已经分配的
runtime.maxMemory(); 可能分配的最大内存
使用的一个例子
// 使用操作系统能够分配给此应用的最大内存的二十分之一
LruCache<String, byte[]> cache = new LruCache<String, byte[]>((int) (runtime.maxMemory() / 20))
{
@Override
protected int sizeOf(String key, byte[] value) {
// 返回value的长度,表示 B 缓存中允许 (按照大小来计算)
return value.length;
// 默认返回1 ,认为所有的键值对都是等价的
//return super.sizeOf(key, value); (按照个数来计算)
}
};
就拿图片来做一个对比
直接将图片放进内存
HashMap<String, byte[]> cache = new HashMap<String, byte[]> ();
使用弱引用概念进行内存优化
HashMap<String, SoftReference<byte[]>> cache = new HashMap<String, SoftReference<byte[]>>();
使用LruCache概念进行内存优化(如上)
- 三级缓存之LruCache 学习
- ListView优化之图片的三级缓存(LruCache)
- Android 之 三级缓存(内存!!!、本地、网络)及内存LruCache扩展 及源码分析--- 学习和代码讲解
- 三级缓存之AsyncTask学习
- volley+Lrucache+DiskLruCahe实现的三级缓存
- LruCache的实现原理(图片三级缓存)
- Android中Bitmap的加载和Cache(三级缓存 :LruCache,DiskLruCache)学习笔记
- android 缓存机制之 LruCache
- 利用LruCache和DiskLruCache使用图片加载的三级缓存
- 图片三级缓存工具类(基与LruCache和 DiskLruCache)
- 利用LruCache封装一个自带三级缓存的ImageLoader
- Android Volley框架的使用之图片的三级缓存策略(内存LruCache+磁盘DiskLruCache+网络Volley)
- 图片加载之三级缓存机制、AsyncTask优化、ComViewHolder极致优化ListView、LruCache搭配Runtime完美内存优化
- android基础学习之android图片的三级缓存
- android学习之20160309图片的三级缓存
- Android 缓存策略LruCache和DiskLruCache学习
- LruCache 缓存
- LruCache缓存
- fedora rpm安装时依赖包出错的问题
- G
- 汽水瓶问题(能喝多少瓶汽水)
- HDU 6156 数位DP
- MySQL学习篇--基础篇02
- 三级缓存之LruCache 学习
- ajax
- NYOJ【96】n-1位数【水题】
- JS学习笔记2-JavaScript 语法
- 51nod 1163 最高的奖励
- C++replace函数用法
- HttpClient Post提交数据
- 新博客踏青
- php文件权限访问