Windows Phone 7.1 Mango: tutte le novità per gli sviluppatori

di Matteo Pagani, in Windows Phone 7,

Attenzione: questo articolo è basato sulla beta 1 dei tool di Windows Phone 7.1. Alcune caratteristiche menzionate nell'articolo potrebbero essere cambiate nella versione finale.

In questi ultimi mesi si è parlato tanto di Mango, il nome in codice della nuova major release di Windows Phone, che verrà rilasciata a fine anno, sia su device nuovi di zecca, che come update per i telefoni già in commercio.

Ora, però, Windows Phone Mango non è più solo qualcosa di astratto: Microsoft ha, infatti, rilasciato da pochissimo la prima beta dei nuovi tool di sviluppo, che danno la possibilità di iniziare a fare esperimenti con le tante nuove API, anche grazie al nuovo emulatore.

In questo articolo vedremo alcune delle principali funzionalità introdotte in Mango, con qualche semplice esempio di codice: per forza di cose non è possibile essere esaustivi, in virtù del gran numero di novità che sono state introdotte. Ci soffermeremo, perciò, soprattutto sulle feature più interessanti.

Nuovi tool e nuovo emulatore

La caratteristica principale dei nuovi tool è quella di consentire lo sviluppo duplice, sia di applicazioni Windows Phone 7.0 (la versione attualmente in commercio) sia Windows Phone 7.1 (il build number provvisorio dato a Mango). In questo modo, potremo iniziare a sperimentare con le nuove API, senza perdere la possibilità di mantenere le applicazioni che abbiamo già sul marketplace (o di crearne di nuove, da pubblicare prima dell'uscita di Mango).

Dobbiamo, però, fare attenzione, poichè il nuovo emulatore contiene un'immagine del sistema operativo che è quella di Mango: se vogliamo utilizzare i nuovi tool anche per sviluppare applicazioni per Windows Phone 7.0, dobbiamo testarle sempre su un device reale!

A proposito del nuovo emulatore, è importante sottolineare l'introduzione di due nuovi tool molto importanti, che ci danno la possibilità di testare feature della nostra applicazione che prima non eravamo in grado di provare: l'accelerometro e i servizi di geolocalizzazione.

Per testare l'accelerometro, avremo a disposizione un render 3D del device che, con il mouse, potremo ruotare a piacimento, scatenando così gli eventi esposti dalla classe Accelerator, che ci notificano la posizione corrente del telefono nello spazio.

Mentre, per testare i servizi di geolocalizzazione, avremo a disposizione una mappa di Bing Maps, sulla quale possiamo inserire dei segnaposto, la cui posizione verrà inviata all'emulatore. In questo modo, gli eventi esposti dalla classe GeoCoordinateWatcher verranno scatenati ad ogni cambiamento di posizione, fornendoci latitudine e longitudine del segnaposto. In più, abbiamo anche la possibilità di creare dei percorsi, per simulare lo spostamento continuo del device lungo un determinato tragitto.

Inoltre, i tool di sviluppo includono un profiler molto potente, che ci permette di vedere in dettaglio il consumo di memoria e CPU della nostra applicazione Silverlight. Inoltre, dato un arco di tempo, ci consente di capire quali sono state le operazioni più onerose.
Il profiler è disponibile anche per le applicazioni XNA, ma in questo caso non avremo il dettaglio sulle righe di codice che hanno consumato maggiori risorse, ma "solamente" il tracing dell'utilizzo della memoria e della CPU durante l'utilizzo.

In più, i tool includeranno anche un explorer per l'Isolated Storage (che ci permetterà di vedere i file salvati dalla nostra applicazione) e uno strumento per scattare screenshot, molto utile quando dobbiamo fare il submit dell'applicazione sul marketplace. L'utilizzo del tempo al futuro è intenzionale: la disponibilità di questi strumenti è stata annunciata al MIX11, ma non sono ancora inclusi nella beta attuale.

Il multitasking

Possiamo parlare di multitasking in Mango riferendoci a due aspetti: la possibilità di passare velocemente da una applicazione all'altra (fast app switching e la possibilità di eseguire operazioni in background (agents).

Per quanto riguarda il primo aspetto, la novità principale è l'introduzione dello stato Dormant, nel quale vengono messe di default le applicazioni quando vengono sospese. La differenza principale rispetto all'architettura della versione 7.0 è che le applicazioni non vengono più terminate, ma vengono solamente messi in atto una serie di operazioni (terminazione dei thread e delle connessioni alla rete, soppressione delle notifiche dei sensori, ecc.) per ridurre al minimo l'impatto sulle performance e sulla batteria.
Il processo, però, rimane "vivo": ecco, perciò, che il resume delle applicazioni diventa istantanteo.

Lo stato Tombstoned è però ancora presente: in caso di bisogno, Windows Phone è in grado di terminare le applicazioni non più necessarie, perchè inutilizzate da molto tempo.Ecco, perciò, che diventa importante continuare a salvare lo stato della nostra applicazione in fase di sospensione: la differenza rispetto all'architettura della versione 7.0 è che dovremo fare il restore dello stesso solo nel momento in cui l'applicazione proviene da uno stato Tombstoned. Cio è reso possibile da una nuova proprietà, esposta dagli argomenti di ritorno dell'evento Application_Activated, che restituisce questa informazione.
Vediamone un esempio:

private void Application_Activated(object sender, ActivatedEventArgs e)
{
  if (!e.IsApplicationInstancePreserved)
  {
    //recupera lo stato dal tombstone
  }
}

Le applicazioni che sono in stato Dormant non possono, però, eseguire operazioni in background: sono "vive", ma non sono comunque in grado di eseguire codice. A questo scopo, Mango introduce una serie di feature che vanno a coprire i principali scenari di utilizzo.

Per poter sfruttare queste nuove feature è necessario ricompilare le applicazioni usando i nuovi tool: le vecchie applicazioni continueranno a funzionare, ma in fase di sospensione verranno sempre mandate in stato Tombstone, esattamente come accade adesso.

Infine, per testare entrambi gli stati (dato che il passaggio dall'uno all'altro non è deterministico), i nuovi tool introducono una nuova opzione tra le proprietà del progetto, che permette di forzare il passaggio allo stato Tombstoned in fase di sospensione: di default, infatti, le applicazioni vengono mandate in stato Dormant, esattamente come sarà sul device.

5 pagine in totale: 1 2 3 4 5
Contenuti dell'articolo

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

Top Ten Articoli

Articoli via e-mail

Iscriviti alla nostra newsletter nuoviarticoli per ricevere via e-mail le notifiche!

In primo piano

I più letti di oggi

In evidenza

Misc