En este segundo artículo vamos a hacer un repaso por los distintos estados que conforman el ciclo de vida de una de estas aplicaciones. También entraremos en detalle sobre las características de cada uno de estos estados.
El ciclo de vida de las aplicaciones Metro en Windows 8 ha cambiado mucho con respecto al que tenían las aplicaciones en versiones anteriores de este sistema operativo. Si hasta ahora todo ese ciclo de vida se reducía a arrancar la aplicación y cerrarla cuando el usuario decidía, ahora se ha enriquecido con etapas extra y con una gran automatización que el sistema operativo hará en segundo plano.
Veamos qué etapas van a existir y qué características van a tener. En la siguiente imagen podemos ver todos los estados que se describirán a continuación, interconectados.
A continuación todos los estados con información más detallada de las características de cada uno de ellos.
Despliegue
La aplicación Metro se obtiene como un paquete con extensión .appx que contendrá un manifiesto y unos cuantos binarios. El manifiesto servirá para describir la aplicación y para concretar las capacidades que necesita para funcionar correctamente.Activación
La aplicación se activará siempre que el usuario solicite su utilización y la aplicación no se encuentre ya en memoria, bien porque se acabe de desplegar, bien porque se haya suspendido (veremos esta etapa a continuación) y no se encuentre ya en memoria.La activación lleva a la aparición de una splash screen de bienvenida que gana tiempo para la aplicación para que pueda gestionar la activación. Durante 15 segundos el sistema operativo esperará a que la aplicación termine su activación, transcurridos los cuales matará la aplicación si está no ha terminado ya. Con esta técnica se busca que las aplicaciones parezcan ligeras y responsivas.
Hay que tener en cuenta que la activación se va a producir siempre como consecuencia de un contrato, que es algo similar a un interfaz que permite conectar cualquier aplicación Metro con funciones del sistema operativo. En la siguiente lista se puede ver los contratos más habituales así como su descripción.
Existen otros muchos contratos que la aplicación puede implementar y que la convertirá en objetivo de ciertas funcionalidades del sistema operativo.
Suspensión
Quizás la etapa más interesante de las nuevas que aparecen en Windows 8. El nuevo sistema operativo se encargará de ceder todos los recursos disponibles a la aplicación que esté en primer plano. Sin embargo, tan pronto pase a segundo plano, le enviará una señal indicando que va a ser suspendida. De este modo la aplicación tendrá tiempo de guardar su estado, debiendo tener en cuenta que no se puede garantizar que vaya a volver de dicho estado de suspensión.La razón es que Windows 8 se encargará de ir descargando de memoria las aplicaciones suspendidas en caso de tener necesidad de sus recursos, especialmente en lo que concierne a memoria. Las aplicaciones suspendidas no consumirán CPU, disco o acceso a red; en realidad su estado será similar al que podemos ver cuando pausamos una aplicación corriendo con el depurador de Visual Studio.
Las aplicaciones suspendidas son susceptibles, por tanto, de morir, entendido como desaparecer de memoria y tener que empezar su ejecución de cero la siguiente vez que se activen.
Será, por tanto, vital para la experiencia de usuario que la aplicación, cuando vaya a pasar al estado de suspensión, guarde todo su estado de modo que si es descargada de memoria y, posteriormente, re-arrancada, sea capaz de mostrarse ante el usuario como si nunca hubiera dejado de ejecutarse. Cualquier otra experiencia supondría un grave inconveniente para el usuario.
Para terminar, es importante tener en cuenta que el sistema sólo espera 5 segundos a que la aplicación complete su suspensión. Pasado este tiempo matará la aplicación. Sin embargo, Windows 8 garantiza que si se utilizan sus APIs de datos, las operaciones se completarán antes de ese tiempo.
También garantiza que no se suspenderá aplicaciones que se encuentren en medio de procesos críticos, evitando de este modo interbloqueos y deadlocks.
Terminación
El sistema terminará las aplicaciones de forma automática bajo ciertas condiciones, como las que hemos indicado para la activación y la suspensión. También se podrá terminar una aplicación desde el Task Manager. Una aplicación que está siendo terminada no recibirá ninguna notificación, por lo que no es un estado que se pueda gestionar.Conclusión
Se puede decir que ha habido un gran salto entre el ciclo de vida que tenían las aplicaciones en Windows 7 y anteriores, frente al que vivirán las aplicaciones en Windows 8. Para el desarrollador se presentan grandes oportunidades, pero también grandes desafíos.Bibliografía
- Descripción del ciclo de vida de Aplicaciones Metro (inglés)
- MSDN: Windows 8 Metro Apps - Application Lifecycle
- Vídeo sobre el funcionamiento de una Aplicación Metro (inglés)
- Channel9: Fundamentals of Metro style apps: how and when your app will run
Javier Holguera
Desarrollador senior con tecnología .NET en Payvision.