七牛云带验证URL
http://xxx.com/FmmoICAJpy2Q1iNGUw7R2K94uH5x?token=dTVWOtVUIiuiyke-tBBl8pl1w6sdK3iO_kE4p9yQ:7SM9kXzG6DvsuehiiJMxHy41SUQ
七牛云带验证并且带过期时间的URL
http://xxx.com/FmmoICAJpy2Q1iNGUw7R2K94uH5x?e=1494561302&token=dTVWOtVUIiuiyke-tBBl8pl1w6sdK3iO_kE4p9yQ:7SM9kXzG6DvsuehiiJMxHy41SUQ
======解决方法======
glide的真正的缓存key是一堆参数组成的,而图片的url只是key其中的一个参数而已
glide源码中会调用DataFetcher的getId方法,加载网络图片是使用的HttpUrlFetcher的getCacheKey方法
1.创建这个类 重写getCacheKey
public class QNCacheGlideUrl extends GlideUrl {
private String mUrl;
public QNCacheGlideUrl(String url) {
super(url);
mUrl = url;
}
@Override
public String getCacheKey() {
return checkQnUrl() && !TextUtils.isEmpty(getQNCacheKey()) ? getQNCacheKey() : super.getCacheKey();
}
private String getQNCacheKey() {
String cacheKey = null;
int index = mUrl.indexOf("?");
if (index != -1) {
cacheKey = mUrl.substring(0, index);
}
return cacheKey;
}
public boolean checkQnUrl() {
if (!TextUtils.isEmpty(mUrl) && (mUrl.contains("&token=") || mUrl.contains("?token="))) {
return true;
}
return false;
}
}
2.使用方法
Glide.with(imageView.getContext())
.load(new QNCacheGlideUrl(url))
.into(imageView);
glide的真正的缓存key是一堆参数组成的,而图片的url