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)));
}
}