Cache Wrapper при загрузке изображения

У меня есть изображение, идентифицируемое по определенному URL-адресу, чтобы получить это изображение, URL-адрес запроса нуждается в параметрах отметки времени и подписи (база подписи на других параметрах). URL-адрес будет изменяться каждый раз при запросе клиента, поскольку он зависит от отметки времени и подписи. Итак, при использовании Glide для загрузки изображения, как показано ниже:

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

Проблема в том, что с одним и тем же изображением, но оно загружается много раз и кешируется снова и снова (из-за разных URL-адресов)

Я хочу создать оболочку кеша, чтобы переопределить метод equals ключа кэша, но я не знаю, как начать с Glide

Я очень благодарен, если кто-нибудь может помочь

Спасибо


person toidv    schedule 19.08.2015    source источник


Ответы (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;
        }
    }
}
person toidv    schedule 19.08.2015
comment
вместо tempUrl.length() == 0 вы можете использовать TextUtils.isEmpty(tempUrl) - person deadfish; 19.08.2015