我知道这是一个非常基本的问题。我试图找到众多的解决方案,但我无法理解它们。
我想要什么
将图片上传到服务器并作为回报我正在获取URL,但问题是在使用此URL设置图像时,设置了旧图像。发生这种情况是因为滑行正在使用旧缓存并且不更新缓存。
如何解决这个问题。
Glide.clear(profilePic);
Glide.with(getApplicationContext())
.load(url)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.skipMemoryCache(true)
.transform(new CircleTransform(MainProfile.this))
.into(profilePic);
目前,图片已更改,但当我单击后退按钮并返回此活动时,它会加载旧图像。像这样从缓存加载图像。
//setting up the profile pic
Glide.with(getApplicationContext())
.load(userProfilePicUrl)
.asBitmap()
.centerCrop()
.into(new BitmapImageViewTarget(profilePic) {
@Override
protected void setResource(Bitmap resource) {
RoundedBitmapDrawable circularBitmapDrawable =
RoundedBitmapDrawableFactory.create(MainProfile.this.getResources(), resource);
circularBitmapDrawable.setCircular(true);
profilePic.setImageDrawable(circularBitmapDrawable);
}
});
问题是,当我回到此活动时,它会显示旧图片而不是新图片。
答案 0 :(得分:2)
试试这个
reinterpret_cast
将Glide.with(DemoActivity.this)
.load(Uri.parse("file://" + imagePath))
.diskCacheStrategy(DiskCacheStrategy.NONE)
.skipMemoryCache(true)
.into(mImage);
替换为DiskCacheStrategy.ALL
答案 1 :(得分:2)
RequestOptions 提供了类型无关的选项,可以在最新版本的Glide中使用Glide自定义加载。
创建 RequestOptions 对象,并在加载图片时使用它。
RequestOptions requestOptions = new RequestOptions()
.diskCacheStrategy(DiskCacheStrategy.NONE) // because file name is always same
.skipMemoryCache(true);
Glide.with(this)
.load(photoUrl)
.apply(requestOptions)
.into(profile_image);
答案 2 :(得分:1)
也许你可以试试这个:
Glide.get(context).clearDiskCache()
Try reading this link as a ref
然而,此解决方案似乎也提供了更多。
Glide.with(Activity.this)
.load(Uri)
.diskCacheStrategy(DiskCacheStrategy.NONE)
.skipMemoryCache(true)
.into(Image);
之前提到的类似问题,您可以找到here。
希望有所帮助。
干杯
答案 3 :(得分:0)
Glide具有内置功能,可以使缓存无效。使用signature()函数可以使旧缓存无效。
GlideApp.with(MainProfile.this)
.load(mediaStoreUri)
.signature(new MediaStoreSignature(mimeType, dateModified, orientation))
.into(view);