2013/08/08

Android App-en bizi-zikloa

 Jakina da Android PC arruntek ez dituzten ezaugarri berezietako gailu mugikorretarako diseinaturiko sistema eragilea dela. Hala nola, pantailaren tamainua, bateria bidezko elikadura eta eskura dauden hadware baliabide erabilgarriak (PC arruntetan baino askoz ere urriagoak, adibidez ARM prozesadoreen abiadura, RAM memoriaren kapazitatea e.a.) dira App-ak garatzerako garaian kontuan hartu beharko liratekeen ezaugarri batzuk.

 Azpimarratzekoa da gailu mugikorrak komunikazio tresneria edo ekipoak direla, eta hauen helburua edota lehentasuna komunikazioei arreta eskeintzea dela. Adibidez inork ez luke gustoko aplikazio bat itxi behar izatea dei bat jasotzeagatik.

 Android, gailuan instalaturik eta exekuzioan dauden aplikazio guztien kudeaketa modu automatikoan egiteko diseinatua izan da, erabiltzaileak modu eroso eta eraginkorrean gailuari ahalik eta errendimendurik handiena ateratzeko.

 Testuinguru honetan, ondorio bat atera dezakegu: Android App-en bizi-zikloa beste sistema eragileengandik ezberdina da. Normalean erabiltzailea izaten da aplikazioen bizi-zikloa kontrolatzen duena PC arruntetako sistema eragileetan, baina Android sistema eragilea bera App-en kontrola egiteko diseinatu da.


 App-en bizi-zikloaz hitz egitea baino askoz zuzenagoa da activitie-n bizi-zikloaz hitz egitea. Modu sinple batean azalduz, Activitie bat App-a osatzen duten erabiltzailearen interfaze edo pantaila bakoitza da; modu konplexuagoan ordea, Activitie bat App bat osatzen duten oinarrizko elementuetako bat da.




 PC arruntetako sistema eragileetako lehio kontzeptua alde batera utzi behar da kasu honetan, aurretik aipatu bezala ingurunea ezberdina delako eta bisualizazioaz ari garenez pantailaren tamainua hazbete oso txikiak izan daitezkeelako (2"-3"). Normalean App baten interfaze edo activitie bakoitzak pantaila osoa betetzen du, eta lehen planuan badago, hau da, erabiltzaileak ikusi eta elkarri eragin badiezaiokete, activitie horrek fokua duela esaten da.


 Jadanik argi dugu Android-ek testuinguru mugikor batean lan egiten duela eta sistemak automatikoki erantzun behar diola inguruneari (deiak, sms-ak,...), baina nola mantendu edo itzuli erabiltzaileari begien aurrean zuena edota erabiltzaileak berak kendutakoa?

 Erantzuna honakoa da: sistemak  martxan jarri diren App edota aplikazio bakoitzeko activitien pila bat mantenduko du (ikus I. ilustrazioa). Activitie bat sortu edota kargatzean bere egoera (pantailako posizio, datuak,...) LIFO ("last input first output") motako pila batera pasatzen da. Modu honetan "atzera" botoiari sakatzean, ikusten dugun interfazea edota activitie-a pantailatik desagertzen da (pilatik ezabatzen da) eta pilaren gainean dagoen hurrengo activitie-a kargatu eta bistaratzen da.


I. ilustrazioa: activitien LIFO pila


 Oso garrantzitsua da sistemak App baten prozesua edozein momentuan hil dezakeela edota activitie bat pilatik ezaba dezakeela ulertzea. Edozein dela arrazoia ere, sistema RAM memoriaren beharrean bada, memoria lortzen edo askatzen hasiko da. Noski, memoria askatze prozesu hau ez da ausazko modu batean egingo, baizik eta sistemak berak aplikazioei buruzko dituen datuetan oinarrituz, hau da, activitien egoera kontuan hartuz, lehenengo stop egoeran dauden activitie-ak ezabatuko ditu, bigarrenik pause egoeran daudenak eta azkenik, egoera kritiko batean egoera aktiboan daudenak.

 Android activitie bat lau egoeretan egon daiteke (ikus II.ilustrazioa):

  • Running: Activitie-a LIFO pilaren gainean kokatzen da eta ondorioz pantailaren fokua dauka. Egoera aktiboa deitzen zaio baita ere.
  • Paused: Activitie-a oraindik ikusten da baina jadanik ez dauka fokua. Egoera honetan beste activitie edo elementu bat pasa da fokua edukitzera baina ez du pantaila osoa betetzen (adibidez, baieztapen eta ohar mezuak)
  • Stopped: Activitie-a dagoeneko ez da ikusten. LIFO pilaren azpira joan da.
  • Destroyed: Activitie-a LIFO pilatik ezabatzen denean. Bi kasuetan gerta daiteke, app-ak finish() metodo edo funtzioari deitzean, eta sistemak berak hala behar duelako zuzenean activitie-a ezabatzean.

II.ilustrazioa: Android activitien egoerak