Megérkezett a Windows Phone 7 és azonnal el is kezdődtek az első értékelések, köztük a negatívumok elemezgetése is. Sokan értik félre azonban az egyik gyakran kritizált megoldást, a multitask működését.
Ennek elsődleges oka, hogy a klasszikus értelemben véve a több folyamat egyidejű futtatásának meghatározását, valóban nem nagyon beszélhetünk multitaskról a WP7 esetében. A második ok, hogy sok helyen (még nálam is) inkább egyszerűen leírják, hogy nincs vagy korlátozott, mint hogy kifejtsék a működését. Pedig tényleg van benne ráció.
Egy mai telefonban és operációs rendszerben a multitask több folyamat egyidejű futtatását jelenti, vagyis azt, hogy ami a háttérben van, az a memóriába kerül és futtathat is kódot, amíg nem használjuk, így például tud adatokat frissíteni, kommunikálni a külvilággal, esetleg használhatja a GPS modult. Ez nyilván sok memóriát (egy idő után egyre többet) és némi processzoridőt is igényel és ha túlmegy a felhasználó egy határon, drasztikusan belassul a rendszer.
Hirdetés
Ez nem túl jó és ezen elgondolkodva a Microsoft fejlesztői más módon oldották meg az alkalmazások futását.
Lifecycle Management
Egy alkalmazás bármikor megszakítható, ha bejövő hívás érkezik vagy elindul egy másik program. A WP7 lehetőséget ad arra, hogy az alkalmazásokhoz a fejlesztők státuszokat rendeljenek. Két fő státusz van, a Pause és a Resume. Ha egy alkalmazás a háttérbe kerül, az operációs rendszer dönthet annak leállításáról is, így Pause lép érvénybe, vagyis megállított (Suspended) státuszba kerül. ilyenkor minden fontos paramétere mentésre kerül és a Resume utasítással újra feléled és előtérbe hozható (Running). ilyenkor visszakapja az előzőleg lefoglalt erőforrásait is.
![]()
Miért jó ez? Mert így erőforrást lehet megtakarítani azzal, hogy egy futó alkalmazás által foglalt erőforrás is felszabadítható. A hub alkalmazásai (email, naptár, zenelejátszó) így minden gond nélkül futhatnak a háttérben.
Miért nem előnyös? Mert például a Skype vagy a GPS-t használó alkalmazásoktól nem vehető el az erőforrás, mivel folyamatosan szükségük van rá a működésük során. Az úgynevezett background processing nem érvényesül, nem futhat kód a háttérben a telefonon.
Push
Az online kapcsolatot fenntartó közösségi alkalmazások, mint a Facebbok kliens, Twitter, HotMail számára a Microsoft egy szerviz használatát tette lehetővé, amelynek Push a neve. Ez nagyjából úgy működik, hogy nem a kliens szólítja meg bizonyos időközönként a szervert, hogy lekérjen adatokat, hanem a WCF-ből is ismert feliratkozási módszerrel úgymond regisztrálnak a szerveren és amikor változás történik, akkor a szerver szólítja meg az alkalmazást. Ez nyilván spórolás az erőforrásokkal egyfelől, másfelől viszont veszélyes lehet az akkumulátoridőre, ha a szerver állandóan megszólítja a klienst.
Összegezve
Szóval a kép nem fekete vagy fehér, mert van multitasking, viszont nem a hagyományos értelemben és módon. a WP7 a bevezetett módszerekkel valószínűleg példával szolgál a többi rendszer számára is (a Push-hoz hasonló dolog működik az iPhoneban is), mert ezekkel az eljárásokkal rengeteget spórolhat a telefon az akkumulátor felhasználás, processzor és memória kihasználás szempontjából.
Ami viszont fájó az, hogy mivel eddig az alkalmazások nem ezt az utat követték, nem futhatnak a háttérben a background processing tiltása miatt. Bizonyára lesznek majd köztes megoldások, de egyelőre ez a helyzet.
Az viszont érdekes lehet, ha megoldják azt, hogy a mostani működésű (nem altatható) alkalmazások is "háttérbe tehetőek legyenek". Akkor lenne igazán jelentős.