加载图片时缓存包装器

时间:2015-08-19 05:22:15

标签: android caching android-glide

我有一个通过特定URL识别的图像,为了获得此图像请求URL需要时间戳和签名参数(签名基于其他参数)。 每次客户端请求时URL都会更改,因为它取决于时间戳和签名。 所以当使用Glide加载图像时如下:

Glide.with(mContext).load(url).into(imageView);

问题是,使用相同的图像,但它加载了很多次并反复缓存(因为不同的URL)

我想构建一个缓存包装器来覆盖equals Cache键的方法,但我不知道如何从Glide开始

我非常感激,如果有人可以提供帮助

由于

1 个答案:

答案 0 :(得分:2)

最后我定制了GlideUrl以获得我的要求

public class GlideUrlKey extends GlideUrl {
    public GlideUrlKey(URL url) { super(url); }
    public GlideUrlKey(String url) { super(url); }
    public GlideUrlKey(URL url, Headers headers) { super(url, headers); }
    public GlideUrlKey(String url, Headers headers) { super(url, headers); }

    @Override public String getCacheKey() {
        String url = toStringUrl();
        if (url.contains("fl_id") && url.contains("fl_rel")) {
            String tempUrl = url.substring(0, url.lastIndexOf("&data%5Bsign%5D"));
            if (tempUrl.length() == 0) {
                tempUrl = url.substring(0, url.lastIndexOf("data[sign]") - 1);
                if (tempUrl.length() == 0) {
                    tempUrl = url.substring(0, url.lastIndexOf("fl_rel"));
                }
            }
            return tempUrl;
        } else {
            return url;
        }
    }
}