Допустим, я загрузил изображение в объект растрового изображения, например
Bitmap myBitmap = BitmapFactory.decodeFile(myFile);
Теперь, что произойдет, если я загружу другое растровое изображение, например
myBitmap = BitmapFactory.decodeFile(myFile2);
Что происходит с первым myBitmap? Собирается ли мусор, или мне нужно вручную собирать мусор перед загрузкой другого растрового изображения, например. myBitmap.recycle()
?
Кроме того, есть ли лучший способ загружать большие изображения и отображать их одно за другим, перерабатывая в пути?
После того как растровое изображение было загружено в память, фактически оно состояло из двух частей. Первая часть включает некоторую информацию о растровом изображении, другая часть включает информацию о пикселях растрового изображения (она состоит из байтового массива). Первая часть существует в используемой памяти Java, вторая часть существует в используемой памяти C ++. Они могут напрямую использовать память друг друга. Bitmap.recycle () используется для освобождения памяти C ++. Если вы сделаете только это, GC будет собирать часть java, и всегда будет использоваться память C.
источник
Тимммм был прав.
согласно: http://developer.android.com/training/displaying-bitmaps/cache-bitmap.html
Кроме того, до Android 3.0 (уровень API 11) резервные данные растрового изображения хранились в собственной памяти, которая не высвобождалась предсказуемым образом, что могло привести к кратковременному превышению приложением пределов памяти и сбою.
источник