1. 11/07/2011
Modelo de ejecución
Mango introduce un nuevo estado: Dormant
Reanudación de aplicaciones rápida (sin Resuming…)
Se busca experiencia de usuario rápida y receptiva
Una sola aplicación en primer plano
Experiencia de navegación entre aplicaciones
consistente
Novedad en Mango: Mantener pulsado back button para
cambiar a la aplicación anterior
Conceptos clave Ciclo de vida de una aplicación
Estado de aplicación (Application State) datos utilizados en
varias páginas de una aplicación
Estado de página (Page State) estado visual de una página
(checkbox activado, textbox con texto…)
Eventos de aplicación (Event State) eventos para gestionar el
estado de la aplicación (Launching, Deactivated, Activated, Closing)
Eventos de página (Page Events) eventos que una aplicación
puede sobreescribir para gestionar el estado de página
Tombstoning proceso de finalización de una aplicación,
guardando previamente el estado de la aplicación y de las páginas
Diccionarios de estado (States Dictionaries) almacenan pares
clave/valor utilizados para restaurar el estado de la aplicación
1
2. 11/07/2011
Ciclo de vida de una aplicación Eventos y acciones del modelo de
Rápida reanudación
Reanudando .. .
de App
ejecución
Evento o Método Acción de la Aplicación
Restaurar estado!
Estado conservado! running
IsAppInstancePreserved
IsAppInstancePreserved == Guardar Estado! Evento Launching Ejecutar muy poco código. No realizar operaciones intensivas en recursos como acceso al
== false
true almacenamiento aislado.
Método OnNavigatedFrom Si no es una navegación hacia atrás salvar el estado del interfaz en el diccionario de estado.
Evento Deactivated Salvar el estado de la aplicación en caso de tombstoning. Además debe almacenarse un estado
persistente en el almacenamiento aislado en caso de que la aplicación se haya terminado. No
activated deactivated debe destruirse el estado de la aplicación en memoria en caso de que la aplicación pase a
inactiva.
Evento Activated Comprobar el valor de IsApplicacionInstancePreserved. Si es cierto, no realizar nada, si es falso
utilizar los datos en el objeto State para restaurar el estado de la aplicación.
Método OnNavigatedTo Comprobar si a página es una nueva instancia. Si no lo es, el estado es automáticamente intacto,
en otro caso si hay datos en el objeto State, debe utilizarse para restaurar el interfaz.
Tombstone
dormant Desasociar recursos del teléfono Evento Closing Salvar datos de la aplicación persistentes en el almacenamiento aislado.
App más Tombstoned
Threads & timers suspendidos
antigua
Modelo de aplicación Desactivar gestión de recursos
OnNavigatedFrom/Deactivated
MediaPlayer.Pause
Salvar estado de página/ aplicación MediaElement.Pause
SoundEffectInstance.Pause
VibrateController.Stop
OnNavigatedTo/Activated PhotoCamera.Dispose
Guardar estado de página/global
Resaturar estado de página/aplicación si tombstoning
XNA Audio Pausado
WP7: la mayoría de las veces Apps Tombstoned
Sensors Notificationes suprimidas
Mango: Apps Tombstoned a veces Networking Cancelado
Sockets Desconectado
MediaElement Desconectado
Camera Disposed
2
3. 11/07/2011
Activar gestión de recursos Check List para cambiar rápido de app
MediaElement.Source/Position/Play En evento Deactivated: guardar estado (como en WP7)
Socket.ConnectAsync
new PhotoCamera/VideoCamera En evento Activated: restaurar estado si tombstoning y
Restaurar estado de la aplicación si estaba
asociar recursos cuando se necesiten
en tombstoning Las aplicaciones no pueden ejecurar código tras lanzar
Launchers/Choosers
XNA Audio Reanudado Las aplicationes pueden continuar su ejecución con la
Sensors Notifications resumed pantalla bloqueada
Networking Completado con
Cancelación Depurar la aplicación con tombstoning
Sockets -
MediaElement -
Camera -
Buenas prácticas I Buenas prácticas II
Lanzamiento de aplicación consistente para el usuario: debe La aplicación debe completar todos los eventos de
ser evidente que se trata de una nueva instancia de la aplicación y métodos de navegación en 10 sg
aplicación Guardar datos progresivamente durante la ejecución
Usar propiedad State en OnNavigatedFrom para guardar Comprobar que no se destruye el estado en memoria
estado
de la aplicación cuando es desactivada
Usar propiedad State en OnNavigatedTo para recuperar
Launchers y Choosers objetos globales
estado
Notificaciones Push: siempre que se lanza la
Guardar datos persistentes en los manejadores de
Deactivated y Closing
aplicación debe recrearse el canal de notificación
No recuperar datos de almacenamiento aislado durante
Launching o Activated carga asíncrona
3
4. 11/07/2011
Recursos
Centro de desarrollo de WP7 en MSDN
http://msdn.microsoft.com/es-es/windowsphone/default.aspx
AppHub
http://create.msdn.com/
Windows Phone Developer Blog
http://windowsteamblog.com/windows_phone/b/wpdev
MobileNUG
http://www.mobilenug.es
Forums
http://forums.create.msdn.com/forums/
4