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