当前位置: 首页 > 工具软件 > LRUCache > 使用案例 >

Android - LruCache

姬凡
2023-12-01

一、概念

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

 类似资料: