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);
} }

最新文章

  1. [MISSAJJ原创]cell内 通过SDWebImage自定义创建动态菊花加载指示器
  2. Java设计模式 - 适配器模式
  3. SharePoint开发 - 自定义导航菜单(一)菜单声明与配置
  4. DataGridView操作
  5. Linux学习sed命令
  6. nodejs+socket.io即时聊天实例
  7. 条款38 通过复合塑膜出has-a或&amp;quot;依据某物实现&amp;quot;
  8. Partitioner分区过程分析
  9. 折腾一天,终于配置好了,ssl证书,启用了https,用的阿里云ECS服务器
  10. std::copy性能分析与memmove机器级实现
  11. 本地文件与服务器文件同步shell脚本。
  12. Delphi 10.3版本获取windows系统版本和CPU信息
  13. Java 终结方法 避免使用终结方法
  14. Oracle数据库里面查询字符串类型的字段不为空和为空的SQL语句:
  15. cell下载图片的思路 --无沙盒(内存)缓冲
  16. PGP工作原理及其安全体制
  17. 【Linux】Linux根目录下各文件夹的意义
  18. Xilinx实习一年总结
  19. 解决Win7&amp;Win8 64位下Source Insight提示未完整安装的问题[转]
  20. hdu 4559 涂色游戏(SG)

热门文章

  1. 整理Webview加载缓慢的解决方案
  2. HTTP数据包详解
  3. vue 路由跳转传参
  4. Git 基础教程 之 远程仓库
  5. 学习EXTJS6(2)“Hello Usegear”
  6. Netty学习总结(2)——Netty的高性能架构之道
  7. 转载 - Pinyin4j的基本用法
  8. SSH框架下单元测试的实现
  9. Javascript中的原型继承具体解释
  10. 在AIX下面查询上一次命令