加载图像时缓存包装器
Cache Wrapper when loading Image
我有一张由特定 URL 标识的图片,要获取此图片,请求 URL 需要时间戳和签名参数(签名基于其他参数)。
URL 每次客户端请求时都会更改,因为它取决于时间戳和签名。
所以使用Glide加载图片时如下:
Glide.with(mContext).load(url).into(imageView);
问题是,使用相同的图像,但它加载了很多次并一遍又一遍地缓存(因为不同url)
我想构建一个缓存包装器来覆盖缓存键的 equals 方法,但我不知道如何从 Glide 开始
非常感谢,如果有人能提供帮助
谢谢
最后我自定义了 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;
}
}
}
我有一张由特定 URL 标识的图片,要获取此图片,请求 URL 需要时间戳和签名参数(签名基于其他参数)。 URL 每次客户端请求时都会更改,因为它取决于时间戳和签名。 所以使用Glide加载图片时如下:
Glide.with(mContext).load(url).into(imageView);
问题是,使用相同的图像,但它加载了很多次并一遍又一遍地缓存(因为不同url)
我想构建一个缓存包装器来覆盖缓存键的 equals 方法,但我不知道如何从 Glide 开始
非常感谢,如果有人能提供帮助
谢谢
最后我自定义了 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;
}
}
}