如何使用Glide强制刷新图像?

时间:2016-03-21 11:52:58

标签: android imageview android-glide

我正在使用Glide库来显示图像。我设置了diskCacheStrategy(DiskCacheStrategy.Source),因此图像没有清除。当我更新配置文件pic时,图像不会更新,直到我清除应用程序的实例(我正在清除Glide .clearDiskCache和Glide.clearMemory())。那么如何强制刷新图像而不清除实例。请参阅下面的代码以便更好地理解

    if(!getBoolValueForProfilePicUploading())
    {        glide.with(context).load(imgData.url).asBitmap().centerCrop().diskCacheStrategy(DiskCacheStrategy.SOURCE).placeholder(R.drawable.default_profilepic).error(R.drawable.default_profilepic).into(new BitmapImageViewTarget(userImageView) {
                    @Override
                    protected void setResource(Bitmap resource) {
                        RoundedBitmapDrawable circularBitmapDrawable =
                                RoundedBitmapDrawableFactory.create(context.getResources(), resource);
                        circularBitmapDrawable.setCircular(true);
                        userImageView.setImageDrawable(circularBitmapDrawable);
                    }
                });
            }else
            {
                new LongOperation(context,imgData,userImageView).execute();
            } 

这是针对asynctask background(),

    protected String doInBackground(String... params) {
                try
                {
                    Glide.get(context).clearDiskCache();
                    Glide.get(context).clearMemory();
                }catch (Exception e)
                {
                    e.printStackTrace();
                }

                return null;
            }

2 个答案:

答案 0 :(得分:1)

我试过了

avatar.setImageURI(null);
avatar.setImageURI(avatarUri);

skipMemoryCache()节省了我的一天。

答案 1 :(得分:0)

引入“签名”以产生唯一密钥,以使缓存无效。像这样打电话:

Glide.with(this)
    .load(uri)
    .signature(ObjectKey(file.lastModified()))
    .error(0)
    .into(binding.imagePreview)