hotspring hotspring - 1 year ago 187
Android Question

Disable or Remove Cache in NetworkImageView- Volley

I am trying to disable cache in in the NetworkImageView which Volley class in my app. I tried this code but it does not remove the cache.

mNetworkImageView = (NetworkImageView) getView().findViewById(;
mImageLoader = VolleySingleton.getInstance().getImageLoader();
mNetworkImageView.setImageUrl(IMAGE_URL, mImageLoader);

Answer Source

You can try the following (inside VolleySingleton class):

    mImageLoader = new ImageLoader(mRequestQueue, new ImageLoader.ImageCache() {
        public Bitmap getBitmap(String url) {
            return null;

        public void putBitmap(String url, Bitmap bitmap) {

You can check when debugging, set breakpoint at Bitmap cachedBitmap = mCache.getBitmap(cacheKey); line inside, you will find cachedBitmap null.

Or put Log.w("cachedBitmap", "Bitmap cached!"); as my following code to check:

public ImageContainer get(String requestUrl, ImageListener imageListener,
        int maxWidth, int maxHeight, ScaleType scaleType) {

    // only fulfill requests that were initiated from the main thread.

    final String cacheKey = getCacheKey(requestUrl, maxWidth, maxHeight, scaleType);

    // Try to look up the request in the cache of remote images.
    Bitmap cachedBitmap = mCache.getBitmap(cacheKey);
    if (cachedBitmap != null) {
        Log.w("cachedBitmap", "Bitmap cached!");
        // Return the cached bitmap.
        ImageContainer container = new ImageContainer(cachedBitmap, requestUrl, null, null);
        imageListener.onResponse(container, true);
        return container;

    // The bitmap did not exist in the cache, fetch it!
    ImageContainer imageContainer =
            new ImageContainer(null, requestUrl, cacheKey, imageListener);

    // Update the caller to let them know that they should use the default bitmap.
    imageListener.onResponse(imageContainer, true);

    // Check to see if a request is already in-flight.
    BatchedImageRequest request = mInFlightRequests.get(cacheKey);
    if (request != null) {
        // If it is, add this request to the list of listeners.
        return imageContainer;

    // The request is not already in flight. Send the new request to the network and
    // track it.
    Request<Bitmap> newRequest = makeImageRequest(requestUrl, maxWidth, maxHeight, scaleType,

            new BatchedImageRequest(newRequest, imageContainer));
    return imageContainer;

Hope it helps!

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download