Kezdőlap > Uncategorized > Windows Phone 7 – Mi van a Multitask helyett?

Windows Phone 7 – Mi van a Multitask helyett?

Sokak számára megdöbbentő hír, hogy a Windows Phone 7-ben jelenlegi állás szerint nincs multitasking. Bár lehetőségünk van alkalmazáson belül több thread-et futtatni, azaz lehet többszálú alkalmazásokat írni, de párhuzamosan futtatni két alkalmazást nincs! Persze ez sem egészen igaz, mert alapvetően több rendszer folyamat is képes párhuzamosan futni, azaz lehet zenét hallgatni, miközben netezel, stb… De tény, hogy két 3rd Party app jelen pillanatban nem tud párhuzamosan futni.

Mik az okai ennek?
Akármilyen alaphardvert is ír elő az MS ez ügyben, akkor is egy erősen korlátozott hardverkészletről van szó a PC esetén. Ennek megfelelően szembesülni kell a következőkkel:

1. Egy erősen korlátozott energia forráson kell osztozni, értsd lemeríti a sok program az aksid. Észre se veszed és a több napos standbyból 3 óra lett…
2. Foglalja a memóriád – értsd lassítja a többi alkalmazásodat
3. Foglalja a processzor időd – értsd lassítja a többi alkalmazásodat
4. Egy képernyőn egyszerre többnyire csak egy alkalmazást futtatsz. (ugyanis nem egy 24”-os monitorról beszélünk itt)

A fenti listán végig haladva egyértelműen megállapíthatjuk, hogy káros hatással lenne a multitasking a telefonunkra., a többi alkalmazásunkra és főleg a felhasználói érlményünkre nézve. De nézzük mit veszítünk a hiányával?

1. Az alkalmazásaink adatforrásokból táplálkoznak, de ha nem futnak a háttérben, az adatokat sem tudják letölteni.
2. Nem tudom “letenni a tálcára” az alkalmazásomat, majd egy másikat megnyitni, és miután azzal befejeztem a munkát, vagy akár közben visszatérni az előzőre és folytatni ott ahol abbahagytam.
3. Gyors váltás a futó alkalmazások között, hiszen futnak párhuzamosan… Multithreading nélkül ez problémás.

A fenti esetek kb le is fedik a multitask hiányából adódó problémakör bk 95%-át.

Mi erre a Windows Phone 7 Series válasza?

1. Push notification

Nem kell az alkalmazásnak futnia azért, hogy infórmációhoz jusson. Különben is milyen kommunikációs modellt akarnánk építeni? Folyamatosan pollozunk egy webservice-t, ezáltal szívva le az aksit, foglalva a memóriát és a processzort?

A modell a következő. Van egy szolgáltatásom, aki rendelkezik az információkkal. Én a mobil alkalmazásomból nyitok egy Http csatornát és elküldök neki egy url-t. Ez az URL azt tartalmazza, hogy ki vagyok én, mint telefon, illetve, hogy hol van az ún. Push Notification Service? Ugyanis a szolgáltatásom miután megkapta ez az url-t az adatokat adott időközönként nem nekem, hanem ennek az URL-nek, azaz a Push Notification Service-nek küldi el. Az URL része, a telefonunk azonosítója, így a Push Notification Service “csomagokban” az összes nekem címzett ilyen jellegű információt elküldheti, amit a telefonunkba épített Push Notification Kliens a megfelelő helyre továbbíthat is! Hova? Hát pl a Home Screenre Tile-ok formájában, vagy éppen Toast formájában, vagy simán Raw adatként is megkaphatja a futó alkalmazás az információt. Az első két esetben lehet, hogy az alkalmazásunk nem is fut már. De magára a kapott üzenetre bökve (értsd táácccsss) felugrik az alkalmazásunk és az információt izlése szerint kezelve, megjelenik.

 

Oké, akkor az üzenetket megkapjuk kötegelve, ez megoldódott, egyes pont pipa!

2. Állapot és Task management

Mi a helyzet azzal, hogy meg akarok nyitni egy másik alkalmazást, talán épp egy ilyen toast-ból, és miután azt bezártam szeretném az előző alkalmazással a munkát ott folytatni, ahol abbahagytam. Szerencsére erre is van lehetőség. A standard “nem futok – indulok – futok, – kiléptem” életciklus sorozat némileg kibővül a wp7-en. És a következőképp nézz ki. Vannak bizony pause, suspended és resume állapotok is. Azaz, amikor az alkalmazást letesszük szunyókálni, kapunk egy üzenetet, miszerint valaki épp pausolni akar minket, itt konkrétan el tudjuk menteni az alkalmazás aktuális állapotát. Aztán jön a Suspended állapot, ahol igen nagy eséllyel a processzünk ténylegesen el is halálozik!! Ugye tekitnve, hogy CLR-ről meg garbage collector-ról van szó, nem tudhatjuk, hogy ez mikor következik be, a lényeg, hogy számítani kell rá, hogy meg fog történni. Node, mikor visszatérek az alkalmazásomhoz, pl egy Back button segítségével, akkor kapni fogok egy resume üzenetet, miszerint bizony folytatni kellene ott, ahol abbahagytuk!, itt bizony nekünk kell visszaállítani az alkalmazás előző állapotát. Aztán ismét “running”-olunk. Egy a lényeg: A USER NE VEGYEN ÉSZRE EBBŐL SEMMIT!

Kettes pont kipipálva, sőt a hármas pont is, mert ennek a rendszernek köszönhetően, bizony több processzor idő és több memória is marad, ami kompenzálni fog a váltási idők miatt, az energia spórolásról meg ne is beszéljünk. Vajon ha a user megkapja az alkalmazásához tartozó adatokat, amiket egy érintéssel be tud tölteni, az alkalamzásai között meg gyorsan tud váltogatni és ott tudja folytatni a munkát ahol abbahagyta, hiányozni fog neki a multitasking?

No, hát ezt tudja jelen pillanatban a wp7. (illetve ezt fogja tudni :P)

Ti mit gondoltok? Gyertek és osszátok meg velünk április 12-én a Visual Studio 2010 launch-on, a Windows Phone 7 Session alatt, vagy a délutáni Ask The Experts sarokban, vaaaaaagy gyertek el ma a Silverlight Klub –ba, a  ma esti találkozóra, 18:00-kor. Sőt a legjobban akkor jártok, ha ide is, oda is eljöttök :))

Kategóriák:Uncategorized
  1. Márton
    április 8, 2010 - 1:57 du.

    ájfónon is kb ez van. power user ott is backgroundert hazsnál, majd lesz a winphone 7 re is.

  2. Zoltan
    április 9, 2010 - 8:46 du.

    hát iphone4-ben már lesz, szelektív multitask, szerintem az ms is ebbe az irányba megy majd

  1. No trackbacks yet.

Hozzászólás