2024. április 20., szombat

Gyorskeresés

Útvonal

Cikkek » Telefónia rovat

Windows Phone 7 fejlesztői alapozás

Rövid, tömör, lényegretörő cikksorozat kezdő WP7 fejlesztőknek!

[ ÚJ TESZT ]

Életciklus és Multitask

Ebben a cikkben a Windows Phone 7-re írt appok életciklusáról és multitask lehetőségeiről fogok írni.

Kezdjünk is bele és vegyük a legalapvetőbb modellt. Az app nem fut, elindítjuk, ennek hatására fut, majd back gombbal kilépünk belőle és ennek hatására visszaérünk a “nem fut” állapothoz. Elég egyértelmű a dolog, semmi bonyodalom, az egyetlen említésre méltó dolog, hogy egy appból csak úgy tudunk kilépni ha Back gombbal visszalépünk róla. Minden egyéb esetben csak deaktiválva lesz, de erről mindjárt beszélek bővebben.

Előtte még nézzünk meg egy szintén egyszerű esetet, azt amikor egy app futása közben kapunk a rendszertől valamiféle értesítést. Egy telefonhívás vagy alacsony akku szint értesítés vagy egy emlékeztető ablak ugrik fel vagy ilyesmi. Ilyenkor nem történik semmi komoly, az app értesítést kap, mikor el lett takarva, illetve amikor kilőjük azt a bizonyos értesítést.

Az izgalmak akkor kezdődnek, amikor arra a bizonyos értesítésre rákattintunk. Vagy a Back gomb helyett a Windows gombbal navigálunk el az appról. Vagy az app navigál minket valamerre el vagy valami hasonló történik. Ilyenkor az appot a rendszer deaktiválja, nem kap több processzoridőt. A képernyőzár esetében beállításfüggő, hogy az app deaktiválódjon vagy csak egy eltakar eseményt kapjon.

Mikor valamilyen úton-módon visszanavigálunk az appunkhoz, a rendszer reaktiválja azt és onnan folytathatjuk a dolgunkat ahol abbahagytuk. Nézzük meg ezt a folyamatot egy kicsit közelebbről. Én ezt passzív multitask-nak nevezném, mert bár valójában nem fut az appunk a háttérben, viszont lehetősége van úgy tenni mintha végig futott volna. Ebben az esetben a kulcsszó az állapotmentés.

Deaktiváláskor az appunk állapotát elmentjük a memóriába és ízlés szerint a háttértárra, majd reaktiváláskor visszaolvassuk azt… vagy nem. Legjobb esetben az appunkat a rendszer teljes mértékben megőrizte, és visszatéréskor semmit nem kell tennünk, onnan folytatódik minden ahol hagytuk.
Egy fokkal rosszabb helyzet ha memóriafelszabadításkor az appunkat törölte a rendszer a memóriából és csak a kinevezett tárolóba mentett állapotjelzőket őrizte meg. Ilyenkor egy új példányt kapunk az appunkból és az elmentett állapotjelzők alapján kell visszaállítanunk a kívánt állapotot.
Legrosszabb eset pedig az, ha nagyon elbarangoltunk az appunktól és az idők során teljes mértékben törlésre került a memóriából. Ilyenkor a háttértárra mentett állapotjelzők lehetnek segítségünkre. Az állapotvisszaállítás gyakorlatilag ugyanúgy fog zajlani mint az előző esetben csak éppen az állapotjelzőket a memóriánál jóval lassabb flash memóriáról kell visszaolvasgatni. Összegezve azon van a hangsúly, hogy deaktiváláskor mentsünk mindenhova, reaktiváláskor pedig az előbb felvázolt sorrenden végigmenve tegyük meg a szükséges lépéseket ha kell.

És akkor most jön a bűvös alvó állapot amikor már tényleg az igazi multitaskról szól a történet.

Ezen a ponton háttérügynökök és értesítések a állnak rendelkezésünkre.

Kezdjük a háttérügynökökkel és először azoknak is a legáltalánosabb fajtájával. Ezekben szinte tetszőleges kódot futtathatunk, csak hát az akkura illetve az esetlegesen előtérben futó appra tekintettel lévén, akad egy kevés limitálás.

Kétféle ilyen általános háttérügynökünk van. Az egyik a periódikus, ami 30 percenként fut 25 másodpercig, és csupán 5% CPU-t és 6MB memóriából kell gazdálkodnia. A másik pedig az erőforrásigényes, aminek ugyan nincsenek ilyen erőforrásbeli megkötései, és ha fut 10 percig fut, de ott van az a HA… akkor fut, ha a telefon töltőn van, és nem mobilnetet használ és nem áll minimumon az akkumulátor és nincs aktív hívás és a telefon képernyője le van zárva és ha a bolygók együttállása is kedvező…

Ha tovább megyünk egy kicsit, találunk még két speciális háttérügynököt. Az egyik a fájlátvitelért felelős, azaz ha például egy adag képet vagy videót vagy bármi mást elkezdünk feltölteni a felhőbe, akkor nem kell végigvárni az app fölött ülve amíg ezzel végez, hanem továbbnavigálhatunk más appra és csinálhatjuk a dolgunkat. Itt érthető okokból attól függően, hogy mobilneten vagy wifi-n vagyunk és, hogy a telefon töltőn van vagy akksiról megy, szintén kapunk egy adag korlátozást.

A másik speciális háttérügynök azért felel, hogy tudjunk zenét lejátszani a háttérben. Képes a telefonról, az internetről lejátszani média tartalmakat, sőt még internetes streamelt tartalmat is tud fogadni. Mindezek mellett érdekesség, hogy a böngészőből indított HTML5 -ös zenéket is ez játssza le. Azon kívül, hogy az appból elnavigálva is hallgathatjuk tovább a zenét, ez azzal az extrával jár még, hogy használhatjuk az OS vezérlőit, azaz a lejátszás / megállítás gombot, a hangerőszabályzót és az előre / hátra léptető gombokat.

És végül jöjjenek az értesítések mert az egy dolog, hogy futkározunk a háttérben, de valahogy értesíteni is kell a felhasználót ha történik valami.

Az értesítések leglátványosabb és legsokrétűbb módját az élő lapkák adják. Lehet időzített: ilyenkor a lapka bizonyos időközönként frissíti a képét akár helyi akár interneten lévő helyről. Lehet egy éppen háttérben futó háttérügynökből is frissíteni. És felhőből is fogadhatunk értesítéseket a lapkák által. Ami még mindenképpen érdekes és fontos, hogy egy apphoz tetszőleges számú lapka tartozhat.

A következő értesítéstípus az értesítősáv. Ő bár nem annyira látványos viszont a leghatékonyabb módja az értesítésnek. Erről az értesítésről biztos, hogy tudomást szerzünk, ugyanis ennél a telefon ugyanúgy viselkedik mintha SMS jött volna… csipogás, rezgés… Ezt a típust is lehet egy háttérben futó ügynökből illetve a felhőből is indítani.

Az utolsó értesítéstípus a figyelmeztetés. Ezt csakis időzítetten használhatjuk, azaz megmondhatjuk, hogy mikor és hogy esetleg milyen rendszerességgel bukkanjon fel. Lényegében vehetjük úgy, hogy a értesítősáv időzített verziója.

Az összes értesítésnek megvan az a képessége, hogy paraméterezhetőek. Ez azt jelenti, hogy mikor rákattintunk, az app a megfelelő oldalon lesz elindítva és a megfelelő állapotot fogja tudni felvenni a paraméter alapján.

Diasorozat

A cikk még nem ért véget, kérlek, lapozz!

Hirdetés

Copyright © 2000-2024 PROHARDVER Informatikai Kft.