如何使用Glide将图片预加载至存储缓存而非内存缓存?
解决方案:用Glide预加载图片到磁盘缓存(不存入内存)
嘿,我懂你想要的效果——把图片提前缓存到磁盘存储里,但暂时不占用应用内存对吧?你当前用的preload()方法默认会同时把图片存入内存缓存和磁盘缓存,这就不符合你的需求了,不过只要稍微调整一下Glide的配置就能搞定!
具体步骤:
自定义RequestOptions,禁用内存缓存并明确磁盘缓存策略
我们需要创建一个配置项,告诉Glide跳过内存缓存,同时确保磁盘缓存正常工作:RequestOptions diskCacheOnlyOptions = new RequestOptions() .skipMemoryCache(true) // 核心:不将图片存入内存缓存 .diskCacheStrategy(DiskCacheStrategy.ALL); // 缓存原始图和处理后的图,可按需调整关于
diskCacheStrategy的可选值,你可以根据需求选择:DiskCacheStrategy.DATA:只缓存原始图片(未经过Glide处理的)DiskCacheStrategy.RESOURCE:只缓存处理后的图片(比如裁剪、压缩后的)DiskCacheStrategy.ALL:同时缓存原始图和处理后的图DiskCacheStrategy.NONE:完全不缓存(这里肯定不用)
用自定义配置执行预加载
把刚才的配置项应用到你的Glide请求里,替换之前的preload()调用:Glide.with(mContext) .load(item.getBigImages().get(0).getUrl()) .apply(diskCacheOnlyOptions) .preload();
额外说明:
之后当你真正需要展示这张图片时,不需要强制沿用skipMemoryCache(true)——Glide会自动从磁盘缓存读取图片,然后根据当时的配置决定是否存入内存缓存,完全不影响展示效果。
内容的提问来源于stack exchange,提问作者Bart Bergmans
相关产品推荐
相关产品推荐

