强制Glide只查看签名以进行缓存或重新下载,因此忽略不同的URI(Android)

时间:2016-10-22 16:18:53

标签: android android-glide

我的后端每次请求时都会将网址更改为相同的图片,这会导致Glide重新下载图片,即使图片没有更改。 所以我想知道是否有可能让Glide忽略查看更改的URL并仅检查签名,以便它可以正确缓存我的应用程序。

谢谢!

1 个答案:

答案 0 :(得分:1)

我在这里找到答案:https://github.com/bumptech/glide/issues/607

您需要覆盖getCacheKey()方法,如下所示:

public class GlideUrlWithToken extends GlideUrl {
        private String mSourceUrl;

        public GlideUrlWithToken(String url, String token) {
            super(new StringBuilder(url)
                    .append(token) // append the token at the end of url
                    .toString());

            Preconditions.checkNotNull(url);
            Preconditions.checkNotNull(token);

            mSourceUrl = url;
            Log.v(TAG, url);
        }

        @Override
        public String getCacheKey() {
            return mSourceUrl;
        }

        @Override
        public String toString() {
            return super.getCacheKey();
        }
    }

然后你可以像下面这样打电话给Glide:

Glide.with(mContext).load(new GlideUrlWithToken(image.getLink(), token))
                    .signature(new StringSignature(signature))
                    .into(imageView);

此处签名保存我的imageId +来自服务器的updatedAt值,因此如果图像更新,则应重新下载该图像。