Around and About .NET World

Il blog di Marco Minerva
posts - 1671, comments - 2232, trackbacks - 2135

My Links

News

Contattami su Live Messenger:


MCTS: Windows, Web, Distributed Applications & SQL Server

MCPD: Enterprise Applications

Tag Cloud

Archives

Post Categories

Links

Porting a Windows 8 Release Preview

Questa sera ho terminato il porting della mia App alla Release Preview di Windows 8. In realtà, l’operazione in sé è stata abbastanza veloce, ma ne ho approfittato per fare un po’ di refactoring sul codice, che non guasta mai.

Ho dapprima dato un’occhiata ai nuovi template prodotti da Visual Studio 2012 RC ed ho notato che alcune cose erano molto diverse rispetto alla versione precedente (in particolare, la pagina base LayoutAwarePage). Quindi, invece di aprire direttamente il progetto, ho creato una nuova Metro Style App ed ho inserito al suo interno i file della mia applicazione.

Un’altra differenza importante è rappresentata dalla presenza del SuspensionManager, una classe helper per gestire il salvataggio e il ripristino dello stato dell’applicazione. In precedenza, questo file era disponibile all’interno dei samples per la Consumer Preview disponibili su MSDN Code Gallery. Si trattava, però, di un’implementazione minimale, che in pratica offriva solo i metodi per leggere e scrivere un dizionario in un file XML.

Al contrario, la versione fornita con Visual Studio 2012 RC è in grado di gestire automaticamente il ciclo di vita dell’applicazione. Per fare questo, la classe LayoutAwarePage implementa i metodi OnNavigatedTo e OnNavigatedFrom, che rispettivamente recuperano e salvano lo stato utilizzando il SuspensionManager. Questi metodi, a loro volta, chiamano i metodi LoadState e SaveState, con cui possiamo recuperare l’oggetto passato alla pagina, oltre a leggerne e salvarne lo stato in caso di sospensione. Nella mia applicazione ho quindi spostato in LoadState il codice che era presente nel metodo OnNavigatedTo, e in SaveState quello che si trovava in OnNavigatedFrom, così da sfruttare l’infrastruttura di salvataggio e ripristino offerta dalla classe base.

Con questo pattern, infatti, quando l’applicazione viene sospesa, la classe LayoutAwarePage richiama il metodo SaveState, in cui si può salvare lo stato della pagina. Nel momento in cui torna in esecuzione, viene automaticamente invocato il relativo metodo LoadState, a cui è passato lo stato salvato in precedenza: in tal modo, è molto semplice ripristinare la situazione esistente al momento della sospensione.

E’ da notare che questo sistema si occupa anche di ripristinare l’history di navigazione tra le pagine, quindi, riprendendo un’applicazione sospesa, sarà in automatico mostrata l’ultima pagina visualizzata, e il tasto Back riporterà alle pagine visitate prima di essa, secondo l’ordine originale. Di conseguenza, non è più necessario salvare in maniera esplicita la storia di navigazione e ripristinarla all’avvio, se l’app era stata sospesa.

Oltre a queste modifiche “strutturali”, ho dovuto rinominare le risorse XAML, così come ci aveva già segnalato Niccolò. Per fortuna, non avevo modificato il file StandardStyles.xaml originale, ma avevo creato un file con i miei stili personalizzati, per cui mi è bastato modificare solo quest’ultimo. Questa parte, comunque, è stata la più noiosa.

Ci sono poi state una serie di modifiche minori, ma tutte di poco conto.

In conclusione, non ho incontrato nessun problema particolare nel porting della mia App alla Release Preview di Windows 8. Molto dipende, però, dalle funzionalità della propria applicazione. Per ogni evenienza, è bene avere una copia del documento Migrating from Windows 8 Consumer Preview to Release Preview, da consultare in caso di problemi.

Tag di Technorati: ,,,

Print | posted on Wednesday, June 6, 2012 1:36 AM | Filed Under [ Updates & Service Pack WinRT & Windows 8 Visual Studio 2012 ]

Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET