Glide 不使用缓存图像
Posted
技术标签:
【中文标题】Glide 不使用缓存图像【英文标题】:Glide Does not use Cached Image 【发布时间】:2020-09-23 14:30:39 【问题描述】:您好,我正在使用 Glide 加载图像,在关注了许多帖子之后,我尝试使用 Glide 缓存来实现
RequestOptions().diskCacheStrategy(DiskCacheStrategy.ALL).centerCrop()
Glide.with(mContext)
.load(imageUrl)
.transition(ImageUtil.crossFadeTransition())
.apply(ImageUtil.requestOptionsForSlider())
.listener(glideRequestListner)
.into(imageView)
我的知识是,如果我使用diskCacheStrategy(DiskCacheStrategy.ALL)
,那么上面的Glide
图像加载代码会在可用时自动使用缓存,如果没有,则下载,对吗?
但我每次调用代码时都会看到(检查我的网速计)它总是从给定的 url 获取/下载(即使我可以看到应用程序内存大小正在增加)。
我什至也试过这段代码-
val future: FutureTarget<File> = Glide.with(mContext)
.load(imageUrl)
.downloadOnly(500, 500)
似乎没有任何效果
我应该怎么做才能让Glide
使用缓存(如果可用)?我对缓存实现的概念有什么问题?非常感谢任何帮助!
【问题讨论】:
【参考方案1】:您确定它正在重新下载吗?您是否尝试在加载图像之前禁用互联网? 否则,对于同一张图片,您的图片 URL 是否始终相同? (因为 Glide 使用它作为缓存键)。 您可以在以下调用中使用它来检查图像是否在缓存中:
Glide.with(fragment)
.load(url)
.onlyRetrieveFromCache(true)
.into(imageView);
【讨论】:
是的,我试过了,但正如我提到的,我在下载时检查了互联网仪表,并且在互联网被禁用时也没有显示任何内容 .onlyRetrieveFromCache(true) 没有返回任何东西,没有图像 我可以看到每次 imageurl 都被更改(后缀签名更改),所以我应该怎么做才能让 glide 明白它们是相同的图像 你应该找到一种方法来唯一标识你的图像并给它一个签名......你的对象的名称或ID等。bumptech.github.io/glide/doc/caching.html#cache-keys以上是关于Glide 不使用缓存图像的主要内容,如果未能解决你的问题,请参考以下文章