Delete cache while using glide

你说的曾经没有我的故事 提交于 2019-12-20 05:42:12

问题


I know it is a very basic question. I have tried to find the numerous solution but I am not able to understand them.

What I want

upload image to the server and in return I am getting URL but the problem is while setting the image using this URL, the old image is set. This is happening because the glide is taking old cache and not updating the cache.

How to solve this.

Glide.clear(profilePic);

Glide.with(getApplicationContext())
    .load(url)
    .diskCacheStrategy(DiskCacheStrategy.ALL)
    .skipMemoryCache(true)
    .transform(new CircleTransform(MainProfile.this))
    .into(profilePic);

currently, the pic is changed but when I click the back button and come back to this activity then it loads an old image. Loading the image from cache like that.

//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);
    }
});

The problem is when I come back to this activity it shows old pic instead of new one.


回答1:


Try this out

Glide.with(DemoActivity.this)
.load(Uri.parse("file://" + imagePath))
.diskCacheStrategy(DiskCacheStrategy.NONE)
.skipMemoryCache(true)
.into(mImage);

Replacing DiskCacheStrategy.ALL to DiskCacheStrategy.NONE




回答2:


RequestOptions provides type independent options to customize loads with Glide in the latest versions of Glide.

Make a RequestOptions Object and use it when we are loading the image.

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);



回答3:


Maybe you can try this:

Glide.get(context).clearDiskCache()

Try reading this link as a ref

However this solution also seems more provided.

Glide.with(Activity.this)
.load(Uri)
.diskCacheStrategy(DiskCacheStrategy.NONE)
.skipMemoryCache(true)
.into(Image);

Reference to which is similar question asked before, which you can find here.

Hope that helps somewhat.

Cheers




回答4:


Glide has inbuilt function to invalidate cache.By using signature() function old cache can be invalidated.

GlideApp.with(MainProfile.this)
.load(mediaStoreUri)
.signature(new MediaStoreSignature(mimeType, dateModified, orientation))
.into(view);


来源:https://stackoverflow.com/questions/42025083/delete-cache-while-using-glide

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!