ImageView не обновляется с новым URL после возобновления активности - PullRequest
0 голосов
/ 10 февраля 2019

есть простые действия A и B. Деятельность A запускает операцию B, и я могу выбрать изображение в качестве изображения профиля, которое сначала я загружаю на сервер, а затем показываю изображение через полученный URL-адрес.Сначала, когда я переключаюсь на действие B, все работает нормально, если изображение уже загружено, оно показывается в просмотре изображений или оно будет загружено и показано.в этом случае, если я выберу другие изображения для загрузки, все будет работать нормально, и просмотр изображений покажет новые изображения.Когда я выхожу из действия и перезапускаю его, отображается ранее загруженное изображение (если оно существует), но любое новое изображение, загруженное на сервер, не будет отображаться, даже если его можно нарисовать.изображение не будет обновляться вообще, пока я снова не выйду из активности и не перезапущу ее, что в этом случае будет отображать предыдущее загруженное изображение, но снова новое изображение не отображается.Подводя итог, в первый раз все работает нормально, но в следующий раз изображение загружается правильно только один раз.Я использовал Glide и Frisco и думал, что проблема вызвана ими, но затем использовал простой ImageView и простое соединение для загрузки растрового изображения, и это было то же самое.это работает только один раз.

Я тестировал как на Nokia 6.1 плюс Android 9 и Nexus 5x Android 8.1, так и на эмуляторах с Android 8.1 и Android 9. Я также пробовал сборку релиза и все тот жеКроме того, я использую AndroidX, и стратегия загрузки изображений и их загрузки такая же, как и в моих предыдущих проектах, и я никогда не сталкивался с этой проблемой раньше.

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

 image.setImageResource(0); 
 image.setImageBitmap(null);                                             
 image.invalidate();



new Thread(new Runnable() {
                    @Override
                    public void run() {
                        Bitmap bmp = null;
                        try {
                            trustEveryone();
                            URL url = new URL(user.image_address);
                            bmp = BitmapFactory.decodeStream(url.openConnection().getInputStream());
                            Bitmap finalBmp = bmp;
                            ProfileActivity.this.runOnUiThread(new Runnable() {
                                @Override
                                public void run() {
                                    _profileImage.setImageBitmap(null);
                                    _profileImage.setImageResource(0);
                                    _profileImage.invalidate();
                                             _profileImage.setImageBitmap(finalBmp);
                                }
                            });
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                }).start();

1 Ответ

0 голосов
/ 11 февраля 2019
  • перед использованием описанного ниже метода, протестировал его в моем проекте резервного копирования перед миграцией на androidX, и это было то же самое, поэтому проблема не была из-за androidX

, так что вот решение.порядок действий: Main-> Profile-> Gallery-> Crop-> Back to Profile, чтобы вернуть результаты из Crop в Profile. Я использую шину событий, которая должна быть запущена в потоке пользовательского интерфейса, поэтому Activity используется для запускаOnUI ..для публикации события была CropActivity, которая была завершена после публикации события, и хотя я использовал ProfileActivity.runOnUI ... для загрузки изображения при получении события из шины событий, весь код выполнялся на CropActivity, поэтому я использовал другуюОбходной путь для отправки результатов назад к предыдущему действию, и это решило проблему без необходимости отмены или установки изображения на нуль.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...