一、概念

LruCache:是Android 3.1(API12)所提供的一个缓存类,缓存到达限制的时候优先删除近期最少使用。
LRU算法原理:内部维护了一个 LinkedHashMap 是以访问顺序排列的满了就删除尾元素(即近期最少使用的Least Recently Used),当获取缓存对象的同时会将该元素更新到队列头部。读写线程安全,对缓存的元素是强引用,不允许null键null值,为null说明没有缓存。

二、使用

  1. 设置 LruCache 缓存大小,一般为当前进程可用内存的1/8。

  1. 重写 sizeOf() 计算出要缓存的对象的大小。()总容量和对象大小计算的单位要一直一致

//获取当前进程可用内存大小,并分配1/8用于缓存
private val cacheSize = Runtime.getRuntime().totalMemory() / 1024 / 8
private val lruCache = object : LruCache<String, Bitmap>(cacheSize.toInt()) {//必须重写此方法来测量每张图片的大小(单位要跟总缓存的单位一致)override fun sizeOf(key: String?, value: Bitmap?): Int {return value?.allocationByteCount ?: 0}
}
//提供存入方法
fun putBitmap(key: String, value: Bitmap) {lruCache.put(key, value)
}
//提供取出方法(返回null意味着不存在缓存)
fun getBitmap(key: String): Bitmap? {return lruCache.get(key)
}

Android - LruCache相关推荐

  1. Android LruCache 压缩图片 有效避免程序OOM

    压缩加载大图片 我们在编写Android程序的时候经常要用到许多图片,不同图片总是会有不同的形状.不同的大小,但在大多数情况下,这些图片都会大于我们程序所需要的大小.比如说系统图片库里展示的图片大都是 ...

  2. Android LruCache技术原理

    概述 记得在很早之前,我有写过一篇文章Android高效加载大图.多图解决方案,有效避免程序OOM,这篇文章是翻译自Android Doc的,其中防止多图OOM的核心解决思路就是使用LruCache技 ...

  3. Android LruCache和DiskLruCache相结合打造图片加载框架(仿微信图片选择,照片墙)

    LrcCache和DiskLruCache相结合打造图片加载框架 转载请标明出处:http://blog.csdn.net/luoshishou/article/details/51299169 源码 ...

  4. android LRUCache解析

    LRU(Least Recently Used)最近最少使用算法 原理 缓存保存了一个强引用(Android 2.3开始,垃圾回收器更倾向于回收弱引用和软引用,软引用和弱引用变得不可靠,Android ...

  5. Android LRUCache原理

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

  6. android lrucache清空,Android LruCache 的 Bug

    码哒,今天无意中发现Android 5.0(api level 21)之前的LruCache实现居然存在一个bug. 由于在电脑上(Java SE环境,非手机上)测试code比较方便,我便将最近写在A ...

  7. android lrucache,Android——使用LruCache缓存图片

    为什么要缓存图片: (1)根据具体设备的不同Android系统为每个应用分配了固定内存空间供应用使用: (2)图片是一种很占内存的资源文件,如果界面中加载一张图片还好说,如果要加载大量的图片就会超过系 ...

  8. Android LruCache 缓存

    使用场景 1.场景一:图片缓存利器. 可以规定缓存大小.有效避免OOM.自动移除队尾不用的图片缓存.避免HashMap各种问题. 2.场景二:通信缓存 从服务端需要获取数据,但是当访问的数据比较大,比 ...

  9. 【Android 应用开发】LruCache 简介

    文章目录 LruCache 应用场景 LruCache 算法原理 LruCache 实现 LruCache 参考 LruCache 应用场景 1. 缓存需求 : 处理大量数据时 , 为了提升性能 , ...

最新文章

  1. static关键字总结
  2. pypthon3精要(15)-zip
  3. Object之defineProperty
  4. windows10下载
  5. (六)Spark-Eclipse开发环境WordCount-JavaPython版Spark
  6. JavaScript 对象继承
  7. php修改特定位bit的值,解读天书 - 漏洞利用中级技巧的分析
  8. nginx.conf文件详解
  9. 图网络笔记-知识补充与node2vec代码注解
  10. 如何选择自己适合的引流平台?
  11. ubuntu snappy 记事
  12. sublime text的插件emmet的功能介绍页
  13. SPOJ375 Query on a tree(LCT边权)
  14. Docker 网易镜像仓库使用
  15. android3.0新功能,PCWorld:Android 3.0最受期待的五大新功能
  16. Python实现遗传算法解决TSP问题
  17. 如何利用matlab循环读取文件夹中的文件
  18. 中文分词词库汇总(一)
  19. android ar 动画,Android实现支付宝AR扫描动画效果
  20. 年薪120W的架构师简历你见过吗?java程序员该如何达到?

热门文章

  1. dede 织梦文章整合的批量插入图片
  2. python数字字符串排序_Python-数字字符串排序
  3. 2019江苏单招计算机分数线,2019年江苏单招分数线一般多少分
  4. android 电量排行榜,续航时间长的安卓手机有哪些?2020长续航安卓手机排行榜
  5. 推荐6款自学网站,好用到暴风哭泣!
  6. java饥荒,饥荒DTS服務器modoverrides.lua生成工具
  7. 【玩转RT-Thread】CPK-RA6M4智慧门禁系统教学
  8. 计算机adminstor用户不见了,Win7系统administrator账户不见了怎么办 附解决办法
  9. JNI便捷开发框架JNA框架之入门(一)
  10. HTML5实现简易电子书