使用LruCache进行图片缓存
来源:互联网 发布:软件研制任务书 编辑:程序博客网 时间:2024/05/16 16:59
1.什么是LruCache
LruCache 是基于 Lru算法实现的一种缓存机制;
Lru算法的原理是把近期最少使用的数据给移除掉,当然前提是当前数据的量大于设定的最大值。
LruCache 没有真正的释放内存,只是从 Map中移除掉数据,真正释放内存还是要用户手动释放。
2.使用例子
//先创建LruCache
private LruCache<String, Bitmap> mMemoryCache;
//设置相应的属性,重写sizeOf方法
// 获取到可用内存的最大值,使用内存超出这个值会引起OutOfMemory异常。
// LruCache通过构造函数传入缓存值,以KB为单位。
int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024);
// 使用最大可用内存值的1/8作为缓存的大小。
int cacheSize = maxMemory / 8;
mMemoryCache = new LruCache<String, Bitmap>(cacheSize) {
@Override
protected int sizeOf(String key, Bitmap bitmap) {
// 重写此方法来衡量每张图片的大小,默认返回图片数量。
return bitmap.getByteCount() / 1024;
}
};
//添加进缓存
public void synchronized addBitmapToMemoryCache(String key, Bitmap bitmap) {
if (getBitmapFromMemCache(key) == null) {
mMemoryCache.put(key, bitmap);
}
}
//得到缓存
public Bitmap synchronized getBitmapFromMemCache(String key) {
return mMemoryCache.get(key);
}
//移除缓存
public synchronized void removeImageCache(String key) {
if (key != null) {
if (mMemoryCache != null) {
Bitmap bm = mMemoryCache.remove(key);
if (bm != null)
bm.recycle();
}
}
特点:当缓存的图片达到了预先设定的值的时候,那么近期使用次数最少的图片就会被回收掉。
步骤:(1)要先设置缓存图片的内存大小,我这里设置为手机内存的1/8,
手机内存的获取方式:int MAXMEMONRY = (int) (Runtime.getRuntime() .maxMemory() / 1024);
(2)LruCache里面的键值对分别是URL和对应的图片
(3)重写了一个叫做sizeOf的方法,返回的是图片数量。
- 使用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 缓存图片
- Android使用 LruCache 缓存图片
- Android使用 LruCache 缓存图片
- MYSQL分页limit速度太慢优化方法
- 《深入解析Spring架构与设计原理》阅读笔记(一)----IOC容器的设计与实现
- Linux IPC进程间通信_消息传递_内核源码分析
- 扫盲:POJO、VO、PO、FormBean什么关系
- 为什么要乘以unity_Scale.w?
- 使用LruCache进行图片缓存
- 2015年最新Android基础入门教程目录(完结版)
- 机器学习分类算法(一)——余弦相似度
- Android开发:关于在启动页面就会报相机异常等类似问题
- 【数据结构和算法】排序算法之三:插入排序
- HDOJ 5567 sequence1 (暴力)
- Masonry Example运行pop install问题处理
- [Leetcode]Construct Binary Tree from Inorder and Postorder Traversal
- HDU 1874 畅通工程续