Idi na vrh
*Ovaj članak se odnosi samo na uređaje s verzijom mango, odnosno 7.5. Budući da svi uređaji mogu biti ažurirani na ovu verziju, onda radi jednostavnosti neću stvarati razlike između verzija. Također onima koji nisu dosad nikad imali prilike proživjeti korisničko iskustvo WP7 preporučam da barem upale emulator prije nego što ovo čitaju :)
Ako ste slučajno developer poput mene kojem dizajn baš ne leži, a još pogotovo jer WP7 dolazi s guidelineovima koji se moraju poštovati i biti u skladu s novim metro sučeljem, ne morate se brinuti jer projekti koje stvarate za WP7 ne dolaze prazni, već imaju integrirana svojstva metro sučelja u kojima je potrebno samo izmijeniti tekst ili ih vezati na neki drugi izvor podataka.
Životni ciklus
Poslije kratkog uvoda dolazimo d
o životnog ciklusa aplikacija. Dakle WP7 je multitasking operacijski sustav, jer je moguće slušati glazbu i čitati mail istovremeno, no taj multitasking nije moguće ostvariti s aplikacijama koje mi možemo pisati, pa ukoliko korisnik odluči promijeniti aplikaciju ili iskrsne neki vanjski događaj aplikacija će se ugasiti i fokus će dobiti nova aplikacija. Pravi multitasking nije napravljen zbog štednje baterije, a i ovako je potrebniji slabiji hardver. Zato se spremanjem podataka prilikom prekidanja i ponovnog učitavanja postiže efekt konkurentnosti, jer aplikacija nastavlja gdje je stala. Pokretanje i nastavljanje aplikacije ne prolazi potpuno kroz iste funkcije kao i prekid i izlazak iz aplikacije. Na slici su događaji i svaki od tih događaja ima svoju zasebnu funkciju, a te funkcije su prazne, što znači da se sam programer mora pobrinuti za spremanje i učitavanje podataka, ali nije obvezan pamtiti na kojoj stranici je aplikacija bila, jer će se sam WP7 znati vratiti na točno mjesto u aplikaciji. Prilikom svake navigacije WP7 sprema gdje je otišao, bez obzira radi li se o navigaciji između aplikacija ili u samim aplikacijama, a pritiskanjem na tipku za povratak ćemo se vratiti istim putem. Bitno je naglasiti da prilikom prekidanja aplikacije nekim vanjskim utjecajem, odnosno nepravilnim izlaženjem, aplikacija može završiti u dva stanja, a to su „dormant“ i „tombstoned“. U „dormant“ stanju aplikacija se ne izvršava, ali sav njen sadržaj je učitan u memoriju i prilikom povratka nije potrebno ponovno učitavati podatke, ali je zato potrebno spremiti podatke prilikom prekida aplikacije, jer ne možemo znati hoće li operativni sustav očistiti i memoriju od naše aplikacije, a tada aplikacija prelazi u „tombstone“ stanje. U „tombstone“ stanju aplikacija se ne izvršava i nije učitana u memoriju, ali stog navigacije je zapamtio da smo malo prije bili u njoj i ako se krenemo vraćati natrag, operativni sustav će ponovno učitati aplikaciju ili ako je bila u „dormant“ stanju samo će nastaviti sa izvršavanjem. Bez obzira na „dormant“ ili „tombstone“ aplikacija će proći kroz isti ciklus, a kroz argument funkcije možemo saznati iz kojeg se stanja aplikacija vratila i prema tome treba li učitati ponovno podatke ili ne.
Spremište podataka
Poslije životnog ciklusa aplikacija slijedeće ključne stvari su spremišta podataka. Spominjali smo kako je prilikom prekida aplikacija potrebno nešto spremati. Isolated Storage nam služi za spremanje podataka, a u njega možemo spremati proizvoljne datoteke, mape, key/value parove, te sql compact edition databazu. Aplikacije međusobno ne mogu jedna drugoj pristupat u Isolated Storage, a to svojstvo opisuje i samo ime ovog storagea. Također u WP7 ne postoji nikakav drugačiji storage u kojeg bi mogli nešto spremati, ali je moguće pristupiti .xap datoteci u koju smo mogli staviti neke slike ili druge resurse, pa čak je moguće strpati i compact edition databazu. Naravno toj .xap datoteci je moguće pristupiti samo u read-only modu, a moguće je i kopirati nešto iz .xap datoteke u Isolated Storage. Aplikacije nemaju ograničenje na veličinu svog Isolated storagea pa je tako moguće popuniti svu memoriju mobitela, što naravno nikako nije preporučeno, a ukoliko gomilate podatke bilo bi lijepo ponuditi korisnicima da taj vaš cache mogu isprazniti ili barem vidjeti njegovu veličinu. Tako ćete ih spasiti brisanja osobnih podataka ili aplikacija, s čime nestaje i Isolated Storage aplikacije što znači da na WP7 nije moguće spremati postavke koje će ostati tamo i kada aplikacije nema. Bitno je još za napomenuti kako je pisanje datoteka i stvaranje mapa sporije nego pisanje key/value parova, pa ukoliko imate kratke informacije za spremit, onda se savjetuje korištenje key/value parova za spremanje, a osim toga budući da se Isolated Storage većinom koristi za serijalizaciju i deserijalizaciju prilikom velikog broja objekata se čak savjetuje stvaranje nove dretve koja će to odradit kako se aplikacija nebi zamrzla na duže vrijeme, jer bi ju u tom slučaju mogli i odbiti na Marketplaceu.
Back tipka
Pred kraj ću vam ostavit još samo jedan trik za gašenje aplikacije na klik back tipke. Naime za WP7 nije moguće samo napisati Application.Exit(), osim ukoliko ste napravili XNA projekt, ali je moguće manipulirati stogom koji sadrži navigaciju našom aplikacijom, pa prema tome možemo taj stog isprazniti kada stisnemo tipku za natrag, jer neće imati utjecaj na ostale aplikacije. Nadam se da nisam jedini koji koristi vb.net umjesto c#-a :)
Protected Overrides Sub OnBackKeyPress(e As System.ComponentModel.CancelEventArgs) For i As Integer = 0 To NavigationService.BackStack.Count Step 1 NavigationService.RemoveBackEntry() Next MyBase.OnBackKeyPress(e) End SubZa svoju prvu aplikaciju mi je bilo dovoljno ovoliko znanja, a više o background taskovima, notifikacijama, upravljanju live tileovima, launcherima i chooserima koje ovdje nisam spomenuo slobodno možete poslušati na trećem Student Tech Clubu u uredu Microsofta. Vidimo se!

