【问题标题】:Find cached image with Signature Android glide使用 Signature Android glide 查找缓存的图像
【发布时间】:2018-06-20 02:16:20
【问题描述】:

我使用此代码是因为每次服务器上的图像更改时我都想下载最新的。

 Glide.with(yourFragment)
 .load(yourFileDataModel)
 .signature(new StringSignature(new ObjectKey(System.currentTimeMillis()))
 .into(yourImageView);

但是这里有一个问题。如果互联网连接中断(或 smt),glide 无法在磁盘缓存中找到图像并显示错误。如何使用签名找到缓存的图像?

【问题讨论】:

    标签: android android-glide


    【解决方案1】:

    您使用错误的key 进行签名。 System.currentTimeMillis() 每毫秒变化一次。您要做的是提供一些仅在图像更改时才会更改的键。你必须做这样的事情。你可以向服务器请求image.getUpdatedAt()

    GlideApp.with(context)
            .load(glideUrlCacheKey)
            .signature(new ObjectKey(image.getUpdatedAt()))
            .into(holder.customerImage);
    

    【讨论】:

    • 所以我需要在从服务器加载图像之前向服务器请求修改日期。看起来很麻烦......顺便说一句,我认为这个答案至少解释了为什么 Glide 总是不使用缓存。这是+1。
    • @Yeung Glide 会自动进行缓存,只要 URL 相同或由于空间限制未删除图像数据,它就应该工作。使用签名密钥是您希望更好地控制缓存的特定情况。在我们的例子中,图片 URL 总是在变化,因为它们都是私有的,我仍然需要缓存它,所以我们使用了一个虚拟 URL 和签名密钥来更新缓存的图片。
    【解决方案2】:

    这个答案可能对你有帮助

    Glide.with(mContext)
      .load(urlProfile)
      .apply(RequestOptions.signature(new StringSignature(...))
          .diskCacheStrategy(DiskCacheStrategy.NONE))
      .into(imageView);
    

    通过应用RequestOptions来使用signature

    有用的链接:http://bumptech.github.io/glide/doc/options.html#requestoptions

    【讨论】:

      【解决方案3】:

      对于离线工作,将图像的 url 存储在 sqllite 中并检查 Internet 连接是否未激活,从 sqllite 中滑动 url

      【讨论】:

        猜你喜欢
        • 2020-09-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-01
        • 2016-07-13
        • 1970-01-01
        • 1970-01-01
        • 2018-06-17
        相关资源
        最近更新 更多