Android:DisplayImageOptions的cacheOnDisk缓存时长是多久还是永久?
ImageLoader磁盘缓存时长说明
嘿,关于你问的cacheOnDisk(true)设置后图片缓存的时长问题,我给你梳理清楚哈~
默认情况下,ImageLoader的磁盘缓存不会自动过期——简单说就是图片会一直留在磁盘上,只有遇到以下几种情况才会被清理:
- 当磁盘缓存的总容量达到你设置的
diskCacheSize上限时,ImageLoader会按照LRU(最近最少使用)的规则,自动删除最久没被访问的缓存文件 - 你在代码里手动调用
ImageLoader.clearDiskCache()方法主动清理缓存 - 用户手动删除App的缓存目录(比如在系统设置里清除App数据/缓存)
如果想要让缓存文件自动过期(比如设置7天后自动失效),你需要额外自定义磁盘缓存的规则,举个实用的代码例子:
// 自定义磁盘缓存,设置7天的过期时间,总缓存大小50MB DiskCache diskCache = new LruDiskCache( new File(getCacheDir(), "imageloader_cache"), // 缓存目录 new Md5FileNameGenerator(), // 文件名生成器 50 * 1024 * 1024, // 缓存总容量上限:50MB 7 * 24 * 60 * 60 * 1000 // 过期时间:7天(毫秒值) ); // 将自定义缓存配置到ImageLoader中 ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context) .diskCache(diskCache) .build();
最后给你划个重点:
- 默认配置下,缓存会永久保留,直到触发LRU清理或手动操作
- 自动过期功能需要你手动配置缓存的过期时间
内容的提问来源于stack exchange,提问作者Buzusima
相关产品推荐
相关产品推荐

