Я работаю над Android-приложением, которое имеет функции для загрузки изображений профиля. Проблема, с которой я столкнулся, - это когда пользователь пытается загрузить новый образ профиля, он успешно загружается на lserver, но попытка загрузить новое изображение через библиотеку волейбола не отражает нового изображения, ImageView по-прежнему показывает старое изображение. Я также вложил реализацию класса singleton class для большей ясности.Android volley image url cache не очищается
Я попытался очистить кеш, используя оба метода, упомянутые ниже, но он не работает. Также попытался сделать недействительным метод ImageView методом invalidate(), но это не работает, так что это больше похоже на проблему кэширования в Android.
Если кто-нибудь столкнулся с подобным сценарием, пожалуйста, помогите.
1) mVolleySingleton.getRequestQueue(). GetCache(). Invalidate (urlProfileImage, true);
2) mVolleySingleton.getRequestQueue(). GetCache(). Remove (urlProfileImage);
Volley Singleton реализация класса:
public class VolleySingleton {
private static VolleySingleton sInstance = null;
private ImageLoader mImageLoader;
private RequestQueue mRequestQueue;
private VolleySingleton() {
mRequestQueue = Volley.newRequestQueue(MainActivity.getAppContext());
mImageLoader = new ImageLoader(mRequestQueue, new ImageLoader.ImageCache() {
public LruCache<String, Bitmap> cache = new LruCache<>((int) (Runtime.getRuntime().maxMemory()/1024)/8);
@Override
public Bitmap getBitmap(String url) {
return cache.get(url);
}
@Override
public void putBitmap(String url, Bitmap bitmap) {
cache.put(url, bitmap);
}
});
}
public static VolleySingleton getInstance() {
if (sInstance == null) {
sInstance = new VolleySingleton();
}
return sInstance;
}
public RequestQueue getRequestQueue() {
return mRequestQueue;
}
public ImageLoader getImageLoader() {
return mImageLoader;
}
}
'// Если вы не хотите использовать кеш mImageLoader = новый ImageLoader (mRequestQueue, новый ImageLoader.ImageCache() { @Override public Bitmap getBitmap (String url) { return null; } @Override общественного недействительными putBitmap (String URL, Bitmap Bitmap) {} }); ' – BNK
Даже если я отключить кэширование, как вы предложили, до сих пор я не могу видеть обновленное изображение. –