Gestione del tombstoning con Silverlight per Windows Phone 7

di Daniele Bochicchio, in Windows Phone,

Windows Phone 7 è in grado di gestire una sola applicazione attiva alla volta, fatta eccezione per alcune applicazioni di sistema (come Internet Explorer e Zune), che sono in grado di funzionare anche in background. Per questo motivo, un'applicazione può essere terminata in qualsiasi momento, perchè l'utente è passato ad un'altra applicazione, oppure perchè usa uno dei pulsanti hardware presenti sul dispositivo, come il tasto back.

Per semplificare questa problematica, le applicazioni Silverlight per Windows Phone 7 supportano una modalità chiamata tombstoning: si tratta, in pratica, della capacità di un'applicazione di essere invocata nello stato in cui si trovava, prima di essere messa in freeze. Supportare questo meccanismo è essenziale, perchè il sistema operativo può "addormentare" e "risvegliare" la nostra app più volte.

La classe PhoneApplicationService mette a disposizione gli eventi Activating, Deactivated, Closing e Launching, che è possibile anche intercettare direttamente via App.xaml, con il suo codebehind.

Si tratta di una serie di eventi che consentono di gestire le fasi riguardanti l'attivazione/disattivazione e l'avvio/uscita da un'applicazione.

In particolare, è essenziale gestire gli eventi Activated e Deactivated, così da dotare la nostra applicazione della capacità di salvare lo stato, quando viene messa da parte, e di ricaricarlo, quando viene invocata nuovamente:

public partial class App : Application
{
  private void Application_Deactivated(object sender, DeactivatedEventArgs e)
  {
    // salvo lo stato
    ViewModel.SaveState(sender, e);
  }

  private void Application_Activated(object sender, ClosingEventArgs e)
  {
    // leggo lo stato
    ViewModel.LoadState(sender, e);
  }
}

Nell'esempio vengono fatte delle chiamate ad una serie di metodi che sono in grado di salvare le informazioni nell'IsolatedStorage o nello state storage di Windows Phone (che è più veloce, ma limitato in dimensione).

Per testare questo comportamento sull'emulatore, è necessario premere il pulsante back. A quel punto, entro 10 secondi circa, sarà necessario far partire nuovamente il debugger di Visual Studio (ad esempio, premendo il tasto F5). Se abbiamo impostato dei breakpoint, vedremo che l'evento Activated viene scatenato e lo stato caricato nuovamente.

Grazie al fatto che le applicazioni per Windows Phone 7 hanno uno stato che dura in base all'istanza dell'applicazione stessa, è possibile creare una classe statica che contenga lo stato dell'applicazione e che sia in grado di ripristinare l'applicazione al suo stato iniziale, dopo che i dati sono stati caricati correttamente.

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

Nessuna risorsa collegata

I più letti di oggi