Android Glide 4 - 如何比较最后修改的标题?

时间:2018-01-10 15:03:15

标签: android android-glide

我正在尝试使用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做同样事情的好方法。做这个的最好方式是什么?谢谢!

1 个答案:

答案 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,您可以将其用作基于长期签名的基础。