外观
什么是 LruCache?如何在自定义图片加载器中实现一个高效的内存缓存?
标准回答
LruCache 维护有上限的内存缓存,访问过的条目变为较新,超限时淘汰较久未访问的条目。图片缓存可用图片标识加尺寸等作键,get 命中则复用,未命中加载后 put,并重写 sizeOf 按 Bitmap 占用字节计量。
通俗例子
缓存只能放约 20MB 图片,新图加入后超限,就移除长时间没访问的图片。Bitmap 应按占用字节计量,不能只数张数。
深入解释
**淘汰按什么顺序:**缓存记录条目的近期访问情况,超过配置容量时先移除较久没使用的条目。命中缓存后不必重新加载,未命中时再从下一层获取。
**容量怎么计算:**默认按条目数计数,图片等大小差异明显的对象应按实际占用重写 sizeOf。淘汰只是移除缓存引用,不保证其他地方没引用,也不等于立即释放所有相关资源。
易混淆点
Android LruCache 的 key 和 value 不支持 null;线程安全也不等于一组复合操作原子。
内容来源
- Android · AI Agent 知识手册 · 原条目
3.3.3