【问题标题】:Cache Wrapper when loading Image加载图像时缓存包装器
【发布时间】:2015-10-01 20:17:05
【问题描述】:

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

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

问题是,使用相同的图像,但它会加载多次并一遍又一遍地缓存(因为不同的 url)

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

如果有人能帮忙,我非常感激

谢谢

【问题讨论】:

    标签: android caching android-glide


    【解决方案1】:

    最后我定制了 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;
            }
        }
    }
    

    【讨论】:

    • 您可以使用tempUrl.length() == 0 而不是TextUtils.isEmpty(tempUrl)
    猜你喜欢
    • 2015-12-02
    • 2013-05-02
    • 1970-01-01
    • 1970-01-01
    • 2012-07-11
    • 2014-10-14
    • 2015-06-20
    • 2015-04-02
    • 2014-08-13
    相关资源
    最近更新 更多