Проверка повторного использования растрового изображения не помогает решить «RuntimeException: Canvas: попытка использовать переработанное растровое изображение» - PullRequest
0 голосов
/ 29 мая 2019

Я отправляю растровые изображения в свою деятельность из Службы (используя LocalBroadcastManager и намеренное добавление растровых изображений)

Я установил их на ImageView в такой активности:

if (!bitmap.isRecycled) {
    imageView.setImageBitmap(bitmap)
}

Когда мне больше не нужен сервис, я закрываю его и выпускаю растровый объект, сохраненный в этом сервисе

Но когда я закрываю сервис, я обычно получаю следующую ошибку:

java.lang.RuntimeException: Canvas: trying to use a recycled bitmap android.graphics.Bitmap@fc4b896

Так что bitmap.isRecycled условие здесь не помогает

Существует ли какой-либо безопасный метод для установки Bitmap в ImageView?

Ответы [ 2 ]

1 голос
/ 29 мая 2019

Когда вы используете imageView.setImageBitmap(bitmap), вам не следует повторно использовать растровое изображение после setImageBitmap, поскольку ваш imageView все еще ссылается и использует это растровое изображение. Вы можете утилизировать его, когда действие / фрагмент / представление уничтожено.

0 голосов
/ 29 мая 2019

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

java.lang.RuntimeException: Canvas: trying to use a recycled bitmap android.graphics.Bitmap@fc4b896

, вместо этого просто проверьте нулевое значение

Также проверьте документацию, почему вы получили ошибку

https://developer.android.com/reference/android/graphics/Bitmap#isRecycled()

...