Hmmmm... jsem blbej ja nebo Android?
Mam jednoduchou aplikaci s Master aktivitou, ktera skrz ListFragment ukazuje seznam veci a Detail aktivitou, ktera ukazuje detaily od veci. Detail je blbej formular, s velkym (640x960) obrazkem na pozadi, jednim mensim obrazkem na popredi (300x300) a dvema textama.
Kdyz jsem si delal xml layout pro ten Detail, tak jsem do <RelativeLayout background=...> a <ImageView src=...> dal jmena existujicich resourcu, abych v editoru videl jak to vypada. Pri behu aplikace jsou tam zcela zbytecny, protoze v OnCreate se okamzite pomoci setImageResource prepisou na resourcy odpovidajici veci co se prave zobrazuje.
No... a kdyz jsem to spustil v emulatoru (kterej mam zhruba bajvoko nastavenej na Nexus S), tak to po trech, ctyrech cyklech Master -> Detail a zpet spadlo na out of memory.
Chvili jsem na to koukal jak puk ("Mam GC, bitch, jaktoze out of memory!" 8) ) a pak jsem vyhodil ty placeholder obrazky z xml layoutu. A padat to prestalo. Kdyz jsem koukal na "nastroje" kterejma se v Androidu hledaji memory leaky, dostal jsem vyrazku, takze jsem to moc dal neresil, ale jsem krapet nervozni.
Cili, otazka: je opravdu mozny, ze obrazek, kterej je (jako resource) referencovanej z ImageView v xml layoutu a kterej okamzite nahradim pres setImageResource jinym resourcem, zustane nekde viset referencovanej a GC ho neuklidi? A je to moje chyba, protoze je to nekde zdokumentovany a mel jsem to vedet, nebo buga?
Podotykam ze ty Detail activity v kazdym cyklu hezky sporadane dosly az do onDestroy, takze by po nich nic zustat teoreticky nemelo.