Pregunta

Estoy siguiendo los principios de mejores prácticas generales de la restauración de mi estado y objetos persistentes persistente y ninguno cuando una aplicación tombstoned es reactivado. Que se puede encontrar en este muy buen artículo de Microsoft

aquí

Las muestras sólo muestran un simple re-activación de la página principal de una aplicación. Sin embargo, como mi aplicación tiene varias páginas (cualquiera de los cuales podría ser desechados y therfore re-activa) y cada uno es vinculante a un objeto de modelo de vista diferente. Me gustaría saber cómo determinar qué página es en última instancia va a ser activado de manera que selectivly puedo deserializar y recuperar el objeto ViewModel correcta para esa página.

O es la mejor práctica para restaurar todos los ViewModels o hay otro patrón de diseño para esto?

¿Fue útil?

Solución

He implementado un modelo simple que se describe mejor como -

  1. En la aplicación que está activado y desactivado caso, me envía un mensaje a las páginas que se suscriben.
  2. Las páginas que se suscriben al mensaje hacen la serialización / deserialización de datos.

Estoy utilizando excelente biblioteca MVVMLight de Laurent Bugnion para Windows Phone 7 . Aquí hay un código de ejemplo que ilustra la emisión de mensajes -

// Ensure that application state is restored appropriately
private void Application_Activated(object sender, ActivatedEventArgs e)
{
   Messenger.Default.Send(new NotificationMessage<AppEvent>(AppEvent.Activated, string.Empty));
}

// Ensure that required application state is persisted here.
private void Application_Deactivated(object sender, DeactivatedEventArgs e)
{
   Messenger.Default.Send(new NotificationMessage<AppEvent>(AppEvent.Deactivated, string.Empty));
}

En el constructor de una clase modelo de vista, I fijó la suscripción a los mensajes de notificación -

// Register for application event notifications
Messenger.Default.Register<NotificationMessage<AppEvent>>(this, n =>
{
   switch (n.Content)
   {
      case AppEvent.Deactivated:
         // Save state here
         break;

      case AppEvent.Activate:
         // Restore state here
         break;
   }
}

He encontrado que con esta estrategia, todos los datos relevantes para la página que está unido a un modelo de vista es guardada y restaurada correctamente.

HTH, indyfromoz

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top