Bitmap.recycle
не требуется для вызова, так как сборщик мусора в конечном итоге самостоятельно очистит растровые изображения (если нет ссылок).Растровые изображения в Android создаются в собственной памяти, а не в куче виртуальных машин, поэтому фактический объект растрового изображения в куче виртуальных машин очень мал, поскольку он не содержит реальных растровых данных. (РЕДАКТИРОВАТЬ: больше не относится к Android 3.0 +) Реальный размер растрового изображения все равно будет учитываться при использовании кучи для целей GC, и убедитесь, что ваше приложение не использует слишком много памяти.
Однако GC кажется немного капризным, когда дело доходит до битмапов.Если вы просто удалите все жесткие ссылки, иногда (в моем случае) они будут зависать на растровых изображениях на некоторое время дольше, возможно, из-за странного способа размещения / подсчета растровых объектов.Bitmap.recycle, по-видимому, хорош для того, чтобы заставить GC быстрее собирать этот объект.
В любом случае, вы не будете пропускать память, если не будете долго вызывать Bitmap.recycle
как вы не держите жесткие ссылки случайно.Вы можете столкнуться с OutOfMemoryErrors
, если попытаетесь выделить слишком много растровых изображений одновременно или слишком большие растровые изображения без вызова recycle
.
РЕДАКТИРОВАТЬ: Важно отметить, что с Android 3.0 растровые изображения небольше выделяется в родной памяти.Они размещаются в куче виртуальной машины, как и любой другой объект Java.Однако то, что я сказал о том, что нет необходимости вызывать функцию recycle, по-прежнему применимо.