我正在尝试使用Glide 4.我的任务是比较远程标头的“最后修改”标头和本地标头。我已经看过签名方法,但我不明白如何在我的情况下使用它。
之前我使用过UniversalImageLoader,这是我的代码:
File cachedImage = DiskCacheUtils.findInCache(iconUrl, ImageLoader.getInstance().getDiskCache());
MySimpleImageLoadingListener imageLoadingListener = new MySimpleImageLoadingListener(context, colorKey);
if (cachedImage != null) {
long modified = 0;
try {
modified = Api2HttpClient.getPictureLastModified(iconUrl);
/* getPictureLastModified() do this:
httpConn = (HttpURLConnection) url.openConnection();
httpConn.setRequestMethod("HEAD");
return httpConn.getLastModified();*/
} catch (Exception e) {
e.printStackTrace();
}
if (modified - 1000 > cachedImage.lastModified()) {
//remove image from cache
DiskCacheUtils.removeFromCache(iconUrl, ImageLoader.getInstance().getDiskCache());
MemoryCacheUtils.removeFromCache(iconUrl, ImageLoader.getInstance().getMemoryCache());
//redownload image
ImageLoader.getInstance().loadImage(iconUrl, imageLoadingListener);
Log.d(Appspress.LOG_TAG_DEBUG, "old picture detected. ");
}
} else {
Bitmap loadedImage = ImageLoader.getInstance().loadImageSync(iconUrl);
}
我没有找到使用Glide做同样事情的好方法。做这个的最好方式是什么?谢谢!
答案 0 :(得分:0)
来自https://github.com/bumptech/glide/wiki/Caching-and-Cache-Invalidation:
Glide.with(yourFragment)
.load(yourFileDataModel)
.signature(new StringSignature(yourVersionMetadata))
.into(yourImageView);
在您的情况下,它可能看起来像这样:
Glide.with( context )
.load( iconUrl )
.signature( new StringSignature( Long.toString( modified ) ) )
.into( yourImageView );
Glide还提供了一个示例IntegerVersionSignature
,您可以将其用作基于长期签名的基础。