Una delle più importanti novità introdotte dal device Windows Phone 7 è il ciclo di esecuzione delle applicazioni end user. A differenza del precedente sistema presente in Windows Mobile, dove potevamo creare un processo e metterlo in background in parallelo con l'esecuzione di un'applicazione in foreground, adesso possiamo avere SOLO UNA applicazione in esecuzione. Questa è la regola fondamentale da tenere ben presente. Inoltre dobbiamo avere molto ben presente cosa succede ad una applicazione da quando viene lanciata a quando e come termina la sua esecuzione. Di seguito una figura presa dall'help microsoft:

Start
Partiamo dal momento in cui l'applicazione viene lanciata. Questo può accadere da differenti posizioni: dalla pagina di Start dove risiedono le Tiles, oppure dalla lista delle applicazioni installate sul device oppure con un 'tap' sulla notifica presente in 'toast'. L'evento associato a questa fase è 'Launching' dentro il cui gestore è possibile effettuare alcune operazioni tranne quelle troppo dispendiose quali, per esempio, il recupero dei dati dall'Isolated Storage.
Running
A questo punto la nostra applicazione gira e si disegna sullo schermo del device. E' possibile a questo punto recuperare i dati dall'Isolated Storage (meglio se tramite un thread parallelo per rendere l'interfaccia più reattiva). A questo punto possono accadere 2 cose: Si preme il tasto Back sulla prima pagina del'applicazione oppure si usa una API di tipo Launcher o di tipo Chooser. Spieghiamo bene. Il Launcher è una API che lancia un'applicazione predefinita nel device e che non ritorna nessun risultato alla routine chiamante. Un esempio ne è il PhoneCallTask che serve per effettuare una chiamata. Il Chooser è analogo al Launcher con la differenza che ritorna un risultato: PhotoChooser che serve a ritornare l'immagine di una foto.
Back sulla prima pagina durante il running
Si torna al punto di partenza, l'applicazione viene definitivamente chiusa. Viene sollevato l'evento 'closing' nel cui gestore dobbiamo salvarei dati nell'Isolated Storage. Al nuovo lancio sarà una nuova istanza del programma ad andare in esecuzione.
Launcher o Chooser durante il running
Si passa in uno stato di 'Deattivata'. Ciò significa che l'applicazione è terminata e che in esecuzione c'è il Launcher oil Chooser, in perfetta sintonia con la regola descritta all'inizio. Quando l'applicazione viene disattivata il sistema può operare un 'tombstone' su di essa, con il quale si memorizza alcune informazioni sull'applicazione chiamante per far si che al momento della chiusura del Launcher o del Chooser questa venga in qualche modo riattivata. Sarà comunque sempre compito dello sviluppatore ripristinare esattamente lo stato della UI affinchè questa appaia come se fosse sempre rimasta in background.Non sempre l'applicazione subisce il 'tombstoning' del sistema, quindi tale evento essendo non deterministico costringe lo sviluppatore a salvare eventuali dati persistenti nella Isolated Storage. L'evento sollevato è il 'Deactivated'. Nel gestore di evento 'deactivated' si salvano i dati relativi alla pagina (Transient page data) e relativi al'applicazione (disponibili per tutte le pagine).
A questo punto possono accadere ancora due cose. SI ritorna alla nostra applicazione tramite il bottone di 'Back' o il Launcher (o Chooser) termina il proprio compito e il sistema riesuma l'applicazione. Viene sollevato l'evento 'Activated'
Gestione dell'Attivazione
Abbiamo due gestori di eventi da implementare. Abbiamo Application_Activated in cui riesumiamo i dati interessanti per tutte le pagine e OnNavigatedTo per riprendere i dati di transizione perla pagina corrente. Inentrambi i casi riesumiamo i dati che in precedenza erano stati messi in due oggetti di tipo Dictionary messi a disposizione dello sviluppatore e che si chamano rispettivamente PhoneApplicationSrvice.State e PhoneApplicationPage.State. Nella solution proposta vengono inseriti i progetti relativi ad alcuni esempi di salvataggio dei dati della pagina e dell'applicazione.
Di seguito la solution con due progetti per il salvataggio dei dati Application e Page:
SV_Blog.rar (176,25 kb)