如何使用 Glide 检查图像是否已缓存在 android 移动设备中

How to check is Image is already cached in android mobile using Glide

我将我的图像及其缩小尺寸的图像(模糊)存储在我的亚马逊服务器中,并将这两个路径都存储在数据库中。

现在我想知道如何在未缓存原始图像的情况下首先显示模糊图像,然后在单击下载时将下载原始图像。我在这里使用 Glide...

我试过了

Glide.with(this)
           .load(mainUrl)
           .diskCacheStrategy(DiskCacheStrategy.SOURCE)
           .thumbnail(Glide.with(this)
                .load(url)                                            
                .diskCacheStrategy(DiskCacheStrategy.SOURCE))
           .centerCrop()
           .into(imageView);

但问题是它会在后台自动下载原始图像。

    Glide.with(TheActivity.this)
   .load("http://sampleurl.com/sample.gif")
   .diskCacheStrategy(DiskCacheStrategy.SOURCE)
   .into(theImageView);

您的代码将阻止 Glide 下载 GIF,并且只会显示已缓存的 GIF,这听起来像是您不想要的。

  • 是的,旧图像最终会被删除。默认情况下,Glide 使用 LRU 缓存,所以当缓存满时,最近最少使用的图像将被移除。如果需要,您可以轻松自定义缓存的大小来帮助实现这一点。有关如何更改缓存大小的信息,请参阅配置维基页面。
  • 遗憾的是,没有任何方法可以直接影响缓存的内容。您既不能显式删除一项,也不能强制保留一项。在实践中,如果磁盘缓存大小合适,您通常不需要担心这两个问题。如果您经常显示图像,它就不会被驱逐。如果您尝试在缓存中缓存 space 中的其他项目和 运行,较旧的项目将被自动逐出以使 space.

如果你想在加载图像之前显示占位符,请使用以下代码:-

Glide.with(this)
           .load(mainUrl)
           .diskCacheStrategy(DiskCacheStrategy.SOURCE)
           .placeholder("provide placeholder image here")
           .thumbnail(Glide.with(this)
                .load(url)                                            
                .diskCacheStrategy(DiskCacheStrategy.SOURCE))
           .centerCrop()
           .into(imageView);

我在 Glide Github 中问过。 https://github.com/bumptech/glide/issues/2051

因此将 apply(RequestOptions.onlyRetrieveFromCache()) 添加到您的 RequestOptions。您可以注册一个侦听器,当缓存中没有图像时会调用 onFailed