Мое приложение может загружать довольно большие изображения.В попытке сохранить память, я пытаюсь использовать временное растровое изображение для загрузки и другое для окончательного изображения после преобразования:
.....
finalBitmap.recycle();
finalBitmap = null;
Bitmap tempBitmap = BitmapFactory.decodeStream(fin, ...);
finalBitmap = Bitmap.createBitmap(tempBitmap, ....);
imgview.setImageBitmap(finalBitmap);
.....
Теперь, на этом мы закончили с tempBitmap,который был необходим только для переноса декодированного растрового изображения на шаг преобразования в createBitmap.Итак:
.....
tempBitmap.recycle();
tempBitmap = null;
.....
И ... происходит сбой с ошибкой «попытка использовать переработанное растровое изображение», в частности из-за перезапуска tempBitmap.tempBitmap не отображался и используется только прямо .
Что здесь не так? Должен ли я просто использовать finalBitmap и полагаться на createBitmap для управления им?( finalBitmap = Bitmap.createBitmap ( finalBitmap , ....) )?Я не вижу, какая будет существующая зависимость от tempBitmap, которая вызовет такой сбой.
Редактировать: Да, нулевое назначение, кажется, приводит к соответствующему, возможному сборка мусора, но я озадачен, почему recycle () для временного Bitmap так проблематичен в этом случае.У меня создается впечатление, что createBitmap () содержит ссылку на него, но почему и как долго?