我正在使用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;
}
答案 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)