NetWorkImageView или Volley не обновляют показанное изображение - PullRequest
0 голосов
/ 19 января 2019

Я пытаюсь получить обновленное изображение с моего веб-сервера после того, как я загрузил на него новое изображение. Я установил кэш-контроль в заголовке для обязательной повторной проверки и max-age = 0. Однако изображение остается прежним, пока я не закрою и снова не открою приложение.

Изображение подается через сервер Node.js с выраженным по URL-адресу, который всегда остается неизменным, но ETag изменяется, когда обнаруживается новое изображение, и для политики Cache-Control установлено значение "max-age = 0", Must-перепроверить». В приложении я снова вызываю NetworkImageView.setImageUrl (), но изображение остается старым, по-видимому, кэшированным.

Я обновляю изображение вот так.

NetworkImageView niv = fragmentManager.findFragmentByTag("currentFragment").getView().findViewById(R.id.niv_pic);
niv.setErrorImageResId(R.drawable.ic_launcher_foreground);
niv.setImageUrl(Constants.API_URL + "/user/getImage/" + user.getId(), NetworkSingleton.getInstance(this).getImageLoader());

Кроме того, я попытался сделать кеш недействительным:

NetworkSingleton.getInstance(context).invalidateImageCache(Constants.API_URL + "/user/getImage/" + UserSingleton.getInstance().getUser().getId());

все, что он делает, это в основном вызов

cache.remove(url);

на androidx.collection.LruCache

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

...