Volley NetworkImageView очищает кэшированное изображение

Кто-нибудь знает, можно ли очистить кешированное изображение из одного сетевого изображения с помощью библиотеки Googles Volley?

У меня есть изображение аватара в NetworkImageView и вы хотите показать новое изображение, как только я загрузил его на сервер. На данный момент, если я делаю profileImg.setImageUrl("myUrl", mImageLoader); Я получаю кешированный образ.

Проверь это :

1) Отключение кеша: если вы хотите отключить кеш для определенного URL-адреса, вы можете использовать метод setShouldCache (), как показано ниже.

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

2) Удаление кеша для определенного URL-адреса : Используйте remove () для удаления кеша URL-адреса.

 yourRequestQueue.getCache().remove(url); 

3) Удаление всего кеша :

 yourRequestQueue.getCache().clear(url); 

Также ознакомьтесь с этой ссылкой здесь .

Надеюсь это поможет.

Поэтому, чтобы запоздало ответить на мой собственный вопрос. Я решил использовать другой подход, чтобы гарантировать, что я всегда получаю последнюю копию изображения аватара, и это оказалось очень простым.

Вместо того, чтобы пытаться очистить отдельное изображение из кеша, я использую следующий метод.

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

Это делается для добавления воображаемого параметра к URL-адресу, который я вызываю, чтобы получить изображение с текущей меткой времени. Это гарантирует, что я всегда звоню на уникальный URL-адрес, поэтому я всегда получаю самую последнюю версию этого изображения.

Красота этого подхода заключается в том, что он не ограничивается Volley и может использоваться, но вы выбираете делать сетевые звонки.

  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/ 

Если вы создадите кеш следующим образом:

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

Вы можете очистить все, как это:

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

Я создал класс volleySingleton. Я загружаю изображение из ImageLoader. У меня есть требование удалить кеш, но я не могу этого сделать. Используются все эти три метода

1) Удаление кеша для определенного URL-адреса: Используйте remove () для удаления кеша URL-адреса.

. VolleySingleton.getInstance () getRequestQueue () getCache () удалить (ImageUrl)..; 2) Удаление всего кеша:

. VolleySingleton.getInstance () getRequestQueue () getCache () ясно ()..;

3) VolleySingleton.getInstance (). GetRequestQueue (). GetCache (). Invalidate (ImageUrl, true);

Я пробовал все из них, но cashe не удаляется