Alkalmazásfejlesztés Androidra - Adobe AIR: memóriakezelés

Pár nap után kiderül az egyik nagy rákfenéje az Adobe AIR + Flash alapú fejlesztéseknek. A memóriakezelés és a rendszer brutális leterhelése egyszerűbb műveleteknél is.
Első körben nézzük át hogyan tudunk lefaragni az esztelen memóriazabálásból.
Az AIR-es progijainkban folyamtosan fut egy úgynevezett garbage collection ami automatikusan kezeli a memóriát. Elősegíthetjük a munkáját ha bizonyos, elemek, objektumok, események, stb esetén jelezzük, hogy nincs már rá szükségünk. Pár példa erre:
1. Használat után mindig távolítsuk el az eseménykezelőket:
loader.removeEventListener(Event.COMPLETE, betoltes);
2. Miután feldolgoztuk az XML fájlunkat használjuk a disposeXML() funkciót:
System.disposeXML(teszt);
3. Nagyobb app írása esetén írjunk saját dispose fukciót:
private function finishCheckingAccount():void { this.disposeEmailService(); this.accountData = null; this.currentAccount = null; this.newUnseenEmails = null; this.oldUnseenEmails = null; System.gc(); }
4. Mindig a megfelelő megjelenítő objektumokat használjuk. Az egyszerű formákhoz amik nem interaktívak használjuk a Shape objektumot.Az inteaktívakhoz aminek nem kell idősáv a Sprite objektumot. z animációkhoz pedig a MovieClip-et. A következő kóddal megnézhetjük melyik objektum mennyi memóriát fogyaszt:
trace(getSize(new Shape()));// output: 236 trace(getSize(new Sprite()));// output: 412 trace(getSize(new MovieClip()));// output: 440