概述
我们在对数据机型操作过程中,为了得到更好的存取速度,通常会把部分数据缓存在内存中,比如图片。但是在 Android 设备中,内存是非常宝贵的资源,如果持续地缓存一些数据,势必会造成内存吃紧。
为了解决这个问题,Android 提供了缓存数据的 LruCache 类来完成这个任务。
LruCache (Least Recently Used)算法的思想就是最近最少使用算法。一般用来做内存缓存使用。如果想做磁盘缓存,后面我们会介绍 DiskLruCache 来处理这个问题。
基本原理
LruCache 内部维护了一个 LinkedHashMap 对象来保存缓存,采用的是访问顺序存储。每当一个缓存数据被访问的时候,这个数据就会被提到列表尾部,这样列表的头部数据就是最近最不常使用的了,当缓存空间不足时,就会删除列表头部的缓存数据。
基本用法
1 | Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(), R.mipmap.ic_launcher);; |
原理分析
构造方法
1 | public LruCache(int maxSize) { |
put 方法
1 | public final V put(K key, V value) { |
1 | public void trimToSize(int maxSize) { |
get 方法
1 | public final V get(K key) { |