Powiedzmy, że załadowałem obraz w obiekcie bitmapowym, takim jak
Bitmap myBitmap = BitmapFactory.decodeFile(myFile);
Co się stanie, jeśli załaduję kolejną mapę bitową, np
myBitmap = BitmapFactory.decodeFile(myFile2);
Co stanie się z pierwszą myBitmapą? Czy pobiera garbage Collected, czy też muszę ręcznie zbierać śmieci przed załadowaniem kolejnej bitmapy, np. myBitmap.recycle()
?
Czy istnieje lepszy sposób na ładowanie dużych obrazów i wyświetlanie ich jeden po drugim podczas recyklingu w drodze?
Po załadowaniu mapy bitowej do pamięci, w rzeczywistości została utworzona z dwóch części danych. Pierwsza część zawiera informacje o bitmapie, druga część zawiera informacje o pikselach bitmapy (jest to układane przez tablicę bajtów). Pierwsza część istnieje w używanej pamięci Java, druga część w używanej pamięci C ++. Mogą bezpośrednio korzystać z pamięci drugiej osoby. Bitmap.recycle () służy do zwalniania pamięci C ++. Jeśli tylko to zrobisz, GC zbierze część Java i pamięć C jest zawsze używana.
źródło
Timmmm miał rację.
według: http://developer.android.com/training/displaying-bitmaps/cache-bitmap.html
Ponadto przed Androidem 3.0 (poziom interfejsu API 11) dane kopii zapasowej mapy bitowej były przechowywane w pamięci natywnej, która nie jest udostępniana w przewidywalny sposób, co może spowodować krótkotrwałe przekroczenie limitów pamięci i awarię aplikacji.
źródło