DiskLruCache
DiskLruCache 是 Android 开发中用于管理磁盘缓存 的工具类,核心作用是基于 LRU(最近最少使用)算法在文件系统上维护一个固定大小的缓存池,实现数据的持久化存储与自动淘汰 。
核心作用
- 减少网络请求:缓存图片、JSON 响应等数据,重复访问时直接从磁盘读取,降低流量消耗并提升加载速度 。
- **防止内存溢出(OOM)**:作为内存缓存(LruCache)的补充,将大文件(如图片)存于磁盘,避免占用过多内存 。
- 自动空间管理 :当缓存总量超过设定上限(
maxSize)时,自动删除最近最少使用的条目,确保存储不失控 。 - 保证数据一致性 :通过
journal日志文件和原子操作(commit/abort),防止因程序崩溃或 I/O 错误导致缓存文件损坏 。
关键特性
- 持久化存储:数据保存在文件系统中,应用重启或关闭后缓存依然有效 。
- 线程安全:内部同步机制支持多线程并发读写,无需额外加锁 。
- 版本控制 :通过
appVersion参数,在应用升级时可自动清空旧缓存,避免数据不兼容 。
典型应用场景
- 图片加载框架的二级缓存(如配合 Glide、Picasso 使用)。
- 网络 API 响应数据的本地缓存。
- 任何需要"有限空间内保留高频数据"的文件存储场景 。
简言之,DiskLruCache 解决了磁盘空间有限 与数据无限增长之间的矛盾,是 Android 高效本地缓存的标准方案之一 。
需要我演示如何在 Glide 中配置 DiskLruCache 作为图片缓存吗?可以帮你快速上手实际应用。