Portál AbcLinuxu, 30. dubna 2025 21:23
Ten problem s otocenim obrazovky je bohuzel hodne neprijemna a zaludna vec, dost to komplikuje vsechny asynchronni operace. Pokud spustis AsyncTask, ktery ma odkaz na aktivitu, a ta aktivita se restartuje, tak mas 2 problemy: 1) asynctask ma odkaz na starou aktivitu, takze nemuze dorucit vysledek nove aktivite 2) vznikl memory leak - garbage colllector nemuze starou aktivitu odstranit dokud AsyncTask neskonci.Tak tak, je to hnus. A ještě horší je to ve chvíli, kdy na zařízení začne docházet paměť. Pak se totiž některé fragmenty můžou zahodit a znovuvytvořit, takže není možné je nějak přímo referencovat.
Problem s listSelectorem jde na 100% nejak resit bez nutnosti 2 apk. Zkousels napriklad: http://stackoverflow.com/a/4856003/243225 ?2 APK nemám kvůli tomu listu, ale protože verze pro API 7+ používá support library, která je dost velká, zatímco 11+ jede nativně. Rozdíl ve velikosti je zhruba 500 kB vs 70 kB.
Pokud vim, tak kdyz dochazi pamet, tak se killne rovnou cela aplikace.Přišlo mi, že je GC může fragment odstranit a pak se znovu vytvoří. Stejně to není tak podstatné. Podstatné je, že člověk musí tak jako tak používat FragmentManager, protože fragment nemusí být vždy nutně přístupný pod stejnou referencí. Nebo, pokud člověk přistupuje k fragmentu z jiného fragmentu získávat reference v onCreate(). Vlastně je to ten samý problém jako s aktivitami, akorát přesunutý trochu jinam.
Kvuli 500 kB mi prijde dost zbytecny to delit na dve APK... Proguard umi osekat nepouzivany kod z knihoven, ale nevim jak velky vliv to bude mit na vyslednou velikost.To je po použití ProGuard. Každopádně nevidím smysl v tom používat Support Library pro něco, co už v systému je.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.