如何检查是否已使用Glide在Android移动设备中缓存了Image

时间:2017-03-06 11:08:56

标签: android android-glide

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

现在我想知道如果原始图像没有被缓存,如何首先显示模糊图像,点击下载它将下载原始图像。我在这里使用Glide ......

我试过这个

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

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

3 个答案:

答案 0 :(得分:1)

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

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

  • 是的,旧图像最终会被删除。默认情况下,Glide使用LRU缓存,因此当缓存已满时,将删除最近最少使用的图像。如果需要,您可以轻松自定义缓存大小以帮助实现此目的。有关如何更改缓存大小的信息,请参阅Configuration wiki页面。
  • 遗憾的是,没有任何方法可以直接影响缓存的内容。您不能显式删除项目,也不能强制保留项目。在实际使用适当的磁盘高速缓存大小时,通常无需担心这两种情况。如果您经常显示图像,则不会被逐出。如果您尝试缓存其他项目并且缓存中的空间不足,则会自动逐出旧项目以腾出空间。

答案 1 :(得分:1)

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

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);

答案 2 :(得分:1)

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

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