Home » Android » android – Volley NetworkImageView clear cached image

android – Volley NetworkImageView clear cached image

Posted by: admin June 15, 2020 Leave a comment

Questions:

Does anybody know if it is possible to clear the cached image from a single NetworkImageView using Googles Volley library?

I have an avatar image in a NetworkImageView and would like to show the new image once I have uploaded it to the server. At the moment if I do
profileImg.setImageUrl("myUrl", mImageLoader); I get the cached image.

How to&Answers:

Check this out :

1) Turning off cache :
If you want disable the cache for a particular url, you can use setShouldCache() method as below.

StringRequest stringReq = new StringRequest(....);
stringReq.setShouldCache(false);

2) Deleting cache for particular URL : Use remove() to delete cache of an URL.

yourRequestQueue.getCache().remove(url);

3) Deleting all the cache :

yourRequestQueue.getCache().clear(url);

Also, check out this link here.

Hope this helps.

Answer:

So to belatedly answer my own question. I ended up taking a different approach to ensure that I always get the latest copy of an avatar image and it turned out to be very simple.

Instead of trying to clear out an individual image from the cache I use the following method.

int time = (int) (System.currentTimeMillis());//gets the current time in milliseconds
String myUrl = "www.mySite.com?timestamp=" + String.ValueOf(time);
profileImg.setImageUrl("myUrl", mImageLoader);

What this does is to append an imaginary parameter to the url I call to get the image with a current timestamp. This guarantees that I am always making a call to a unique url and so therefore am always getting the most up-to-date version of that image.

The beauty of this approach is that it is not limited to Volley and can be used however you choose to make network calls.

Answer:

in the LruBitmapCache you should do diable put(url, bitmap) :

 @Override
    public void putBitmap(String url, Bitmap bitmap) {
       // put(url, bitmap);
    }

by this way every time you call the volley method image don’t save to catch

Answer:

  To turn off the cache:

1
request.setShouldCache(false);
to remove the cache for a specific request:

1
queue.getCache().remove(url);
to clear all cache:

1
queue.getCache().clear();
to invalidate the cache: this will allow to display the cached data until the response is received. When the response is received, it will automatically override the cached data.

1
queue.getCache().invalidate(url, true);

    for more details you can refer to the 
    url:http://androidresearch.wordpress.com/2014/02/01/android-volley-tutorial/

Answer:

If you create the cache like this:

RequestQueue requests = Volley.newRequestQueue( context );
BitmapCache cache = new BitmapCache(cacheSize);
ImageLoader loader = new ImageLoader( requests, cache );

You can clear all like this:

public void clear () {
    cache.evictAll();
    requests.getCache().clear();
}

Answer:

I have created volleySingleton Class. I load image from ImageLoader . I have a requirement of deleting the cache but not able do that. Used all these three method

1) Deleting cache for particular URL : Use remove() to delete cache of an URL.

VolleySingleton.getInstance().getRequestQueue().getCache().remove(ImageUrl);
2) Deleting all the cache :

VolleySingleton.getInstance().getRequestQueue().getCache().clear();

3)
VolleySingleton.getInstance().getRequestQueue().getCache().invalidate(ImageUrl,true);

I have tried all of them but cashe is not getting deleted