Загрузка изображения в режиме просмотра изображений с помощью Glide - PullRequest
0 голосов
/ 26 августа 2018

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

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

Вот мой код для отображения изображения с URL:

public void showImage(){
    mStorageRef.child("TimeTable").getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
        @Override
        public void onSuccess(Uri uri) {
            url = uri.toString();
            RequestOptions options = new RequestOptions().centerCrop().placeholder(R.mipmap.ic_launcher).error(R.mipmap.ic_launcher_round);
            Toast.makeText(TimeTable.this, uri.toString(),Toast.LENGTH_SHORT).show();
            Glide.with(TimeTable.this).load(url).apply(options).into(image);
        }
    });
}

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

enter image description here

Пожалуйста, спросите, требуются ли какие-либо дополнительные сведения.

1 Ответ

0 голосов
/ 26 августа 2018

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

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

Вы можете рассмотреть возможность использования функций onPause, onDestroy для обработки действия удаления слушателя.Проверьте removeEventListener функцию Firebase.

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

...