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时调用,返回存入的数据大小@Overrideprotected 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);}}

转载于:https://www.cnblogs.com/jiy-for-you/p/7282023.html

LruCache缓存机制相关推荐

  1. 剖析Picasso中的内存缓存机制——LruCache

    众所周知,Picasso是一个优秀的Android图片加载库.本篇并不讨论picasso的使用,而是来谈一谈picasso的缓存机制. 我们知道,目前主流的图片解决方案大部分都是三级缓存,即内存缓存. ...

  2. Android 缓存机制 LRUCache

    1.缓存策略 缓存策略主要包含缓存的添加.获取和删除三类操作.删除缓存是因为不管是内存缓存还是硬盘缓存,它们的缓存大小都是有限的.当缓存满了之后,再想添加缓存就需要删除一些旧的缓存来添加新的缓存. L ...

  3. android lru进程队列,Android缓存机制——LruCache

    一.Android中的缓存策略 Android的缓存,主要的就是内存缓存和硬盘缓存. 不管是内存缓存还是硬盘缓存,它们的缓存大小都是有限的.当缓存满了之后,再想其添加缓存,这个时候就需要删除一些旧的缓 ...

  4. Glide的缓存机制

    Glide的缓存分为两个模块,一个是内存缓存,一个是硬盘缓存. 内存缓存的作用是防止应用重复将图片数据读取到内存当中: 硬盘缓存的作用是防止应用重复从网络或其他地方下载和读取数据. Glide的缓存K ...

  5. LeetCode实战:LRU缓存机制

    背景 为什么你要加入一个技术团队? 如何加入 LSGO 软件技术团队? 我是如何组织"算法刻意练习活动"的? 为什么要求团队的学生们写技术Blog 题目英文 Design and ...

  6. 深入浅出 MyBatis 的一级、二级缓存机制

    一.MyBatis 缓存 缓存就是内存中的数据,常常来自对数据库查询结果的保存.使用缓存,我们可以避免频繁与数据库进行交互,从而提高响应速度. MyBatis 也提供了对缓存的支持,分为一级缓存和二级 ...

  7. LeetCode第 146 号问题: LRU 缓存机制

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

  8. LruCache缓存处理及异步加载图片类的封装

    Android中的缓存处理及异步加载图片类的封装   一.缓存介绍: (一).Android中缓存的必要性: 智能手机的缓存管理应用非常的普遍和需要,是提高用户体验的有效手段之一. 1.没有缓存的弊端 ...

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

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

最新文章

  1. python 数据比对 函数_1行代码实现Python数据分析:图表美观清晰,自带对比功能丨开源...
  2. nginx proxy_cache 缓存配置
  3. Opencv SolvePnP调用实战
  4. golang plugin模块的使用
  5. Anaconda 镜像源操作(查看配置删除)
  6. vSphere 故障排除之网络篇
  7. Java基础篇:如何使用instanceof
  8. Uboot下SPI FLASH的添加(SPI 控制器采用软件模拟的方式)
  9. Android HAL(硬件抽象层)介绍以及调用
  10. U盘的针脚板竟然掉了
  11. 黑暗欺骗恐怖游戏c++代码完整
  12. 局域网桌面监控软件_如何促进局域网监控软件在企业中的普及
  13. 错误:“应用程序无法启动,因为应用程序的并行配置不正确。请参阅应用程序事件日志,或使用命令行sxstrace.exe工具” 的解决
  14. 士不可以不弘毅,任重而道远
  15. Redis介绍--列表(LISTS)数据类型(六)
  16. 曝光中国女性的私密数据-广西富婆多,快上车!
  17. 请输入一个数字作为秒数,在页面按时间,分钟,秒的格式输出(如输入600,页面显示:0时10分0秒
  18. Python循环语句(while循环、for循环)
  19. 项目从Spring转到SpringBoot Migrating from Spring to Spring Boot
  20. 外贸订单管理系统搭建丨汇信

热门文章

  1. python实现项目的复制_Python之copy模块
  2. idea svn配置_IDEA 导入svn项目实践
  3. archlinux php imagemagick,Arch Linux服务器启用Imagemagick PHP扩展
  4. boostrap-table export 导出监听
  5. 百度网络推广总结大家在做页面标题优化时需注意的事项!
  6. python访问k8s的api_如何通过Python Kubernetes客户端连接microk8s API?
  7. android从放弃到精通 第五天 excellent
  8. vue编写messageBox,使用函数调用
  9. IxRmhOECiP
  10. 判断某个点是否在不规则图形内