LruCache:

Android提供的使用了(Least Recently Used)近期最少使用算法的缓存类

内部基于LinkedHashMap实现

实现这个主要需要重写

  • 构造时需要确定Cache的最大内存,一般通过
    //获取程序最大可用内存
int max = (int)Runtime.getRuntime().maxMemory();
//取可用内存的四分之一做缓存
int size = max/4;
  • sizeOf()方法:在添加value到Cache时会被调用,需要返回添加进数据的字节大小

  • 在put(key,value)添加时先通过get(key)判断是否已经有key对应的value存在

在内存缓存图片的简单实现:

public class MyLruCache extends LruCache<String, Bitmap> {

    private static MyLruCache myLruCache;

    private MyLruCache(int maxSize) {
super(maxSize);
} public static MyLruCache getMyLruCache() {
if (myLruCache == null) {
int maxMemory = (int) Runtime.getRuntime().maxMemory();
int maxSize = maxMemory / 4;
myLruCache = new MyLruCache(maxSize);
}
return myLruCache;
} //每次存入bitmap时调用,返回存入的数据大小
@Override
protected int sizeOf(String key, Bitmap value) {
return value.getByteCount();
} //添加
public void add(String key, Bitmap bitmap) {
if (get(key) == null) {
put(key, bitmap);
}
} //获取
public Bitmap getBitmap(String key) {
return get(key);
} }

LruCache缓存机制的更多相关文章

  1. 缓存(LruCache)机制

    LruCache 1.变量 private final LinkedHashMap<K, V> map; private int size;//已经存储的数据大小 private int ...

  2. 【转】彻底解析Android缓存机制——LruCache

    彻底解析Android缓存机制——LruCache 关于Android的三级缓存,其中主要的就是内存缓存和硬盘缓存.这两种缓存机制的实现都应用到了LruCache算法,今天我们就从使用到源码解析,来彻 ...

  3. Android-Universal-Image-Loader的缓存处理机制与使用 LruCache 缓存图片

    讲到缓存,平时流水线上的码农一定觉得这是一个高大上的东西.看过网上各种讲缓存原理的文章,总感觉那些文章讲的就是玩具,能用吗?这次我将带你一起看过UIL这个国内外大牛都追捧的图片缓存类库的缓存处理机制. ...

  4. android 视频的缩略图 缓存机制和 异步加载缩略图

    在这次的工作开发项目中,涉及到一个视频缩略图的视频列表:这个在大家看来,制作视频缩略图就是两行代码就搞定的事.确实是这样的,百度一下,每个帖子都知道制作视频缩略图的方法,在这里确实也是一样的,但是我要 ...

  5. Solr4.8.0源码分析(19)之缓存机制(二)

    Solr4.8.0源码分析(19)之缓存机制(二) 前文<Solr4.8.0源码分析(18)之缓存机制(一)>介绍了Solr缓存的生命周期,重点介绍了Solr缓存的warn过程.本节将更深 ...

  6. Solr4.8.0源码分析(18)之缓存机制(一)

    Solr4.8.0源码分析(18)之缓存机制(一) 前文在介绍commit的时候具体介绍了getSearcher()的实现,并提到了Solr的预热warn.那么本文开始将详细来学习下Solr的缓存机制 ...

  7. [Swift]LeetCode146. LRU缓存机制 | LRU Cache

    Design and implement a data structure for Least Recently Used (LRU) cache. It should support the fol ...

  8. mybatis缓存机制

    目录 mybatis缓存机制 Executor和缓存 一级缓存 小结 二级缓存 小结 mybatis缓存机制 mybatis支持一.二级缓存来提高查询效率,能够正确的使用缓存的前提是熟悉mybatis ...

  9. 146. LRU缓存机制

    题目描述 运用你所掌握的数据结构,设计和实现一个LRU (最近最少使用) 缓存机制.它应该支持以下操作: 获取数据 get 和 写入数据 put . 获取数据 get(key) - 如果密钥 (key ...

随机推荐

  1. solr的学习

    1):  http://archive.apache.org/dist/lucene/solr/ref-guide/  pdf下载地址 solr历史版本的下载:http://archive.apach ...

  2. HTML 1.1页面js修改文字颜色

    昨天的报告页面,想要实现根据不同文字内容改变字体颜色,效果图: 调试了半天出不来效果,最后请教了前端,上代码: <!DOCTYPE html> <html lang="en ...

  3. 【剑指Offer】44、反转单词序列

      题目描述:   牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上.同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思.例如,&qu ...

  4. 学习Linux服务的方法

    1.服务的概述:名字.功能.特点.原理.端口号 2.安装 3.配置文件的位置 4.服务器启动.关闭的脚本,查看端口 5.此服务的使用方法 6.修改配置文件,案例部署 7.排错调优

  5. Linux放弃到入门

    流星,因为短暂而美丽,划过黑寂的夜空,释放出那一闪而逝的光芒,虽然微弱,但却没有人能无视它的存在.人生如同流星,充满了精彩与传奇,如同一支美丽的传说,究竟能否想流星那样短暂,别人决定不了,上天也决定不 ...

  6. 程序包管理rpm和yum

    Linux程序包管理: API:Application Programming Interface源码包 POSIX:Portable OS 程序源代码 --> 预处理 --> 编译 -- ...

  7. ip代理池学习

    代理的作用 网上有许多售卖代理的网站,也有免费的,不过其功效性会能影响.通过代理网站,我们可以向访问的目标访问器隐藏自己的真实ip,避免ip地址以访问频率过高等原因被封. 步骤 1.搜集一个免费的代理 ...

  8. python下的线程 进程,以及如何实现并发服务器

    在一个CPU(一核)的电脑上, 程序的运行是并发运行的,调度的算法叫时间片轮转法,也叫轮询法 在多CPU(多核)的电脑上,一个CPU跑一个程序,刚程序运行数量小于核心数时,程序是并行的 并发:看上去一 ...

  9. elasticsearch6.4中文文档

    男朋友翻译的,我这边做一个查看入口,分享给大家,O(∩_∩)O哈哈~ 版权声明:本文为博主原创文章,无需授权即可转载,甚至无需保留以上版权声明,转载时请务必注明作者. https://blog.csd ...

  10. 念念不忘SERVLET

    这个弄弄也有意思,以前无法入门,没有系统性概念,现在慢慢开始懂了.. 这个SERVLET/JSP学习笔记也易懂.. 那个JAVA7程序设计也可以慢慢看来,, 再加上SPRING,我黑心了??:) pa ...