Android: ошибка «пытается использовать переработанное растровое изображение» с временными растровыми изображениями

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

.....
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 () содержит ссылку на него, но почему и как долго?

Ответы на вопрос(1)

Ваш ответ на вопрос