Glide: невозможно скопировать переработанное растровое изображение

Я использую SubsamplingScaleImageView с Glide для загрузки, кэширования и отображения изображений:

SubsamplingScaleImageView mImageView;

Glide.with(this)
.load(url)
.asBitmap()
.into(new SimpleTarget<Bitmap>() {
        @Override
        public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) {
                mImageView.setImage(ImageSource.bitmap(
                    Bitmap.createBitmap(resource, x1, y1, x2 - x1, y2 - y1)));
        }
    });

Работает но иногда вылетает с ошибкой IllegalStateException: Can't copy a recycled bitmap в Bitmap.createBitmap, Как это исправить?

1 ответ

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

@Override
public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) {
    if (!resource.isRecycled()) {
        mImageView.setImage(ImageSource.bitmap(Bitmap.createBitmap(resource, x1, y1, x2 - x1, y2 - y1)));
    }
}
Другие вопросы по тегам