Todos los sitemas operativos usan su propio modelo de ejecución de aplicaciones, según el kernel que tengan (scheduler incluido), el de Windows Phone quizá es uno de los más...peculiares, por llamarlo de alguna forma. Si eres un desarrollador de Windows Phone, esta entrada deberías sabértela de memoria y casi usarla para ligar. Si no lo eres, siempre es interesante saber cómo funcionan las tripas de tu terminal, sobre todo en un tema tan quisquilloso como es la multitarea, no sólo para saber lo que está pasando, sino para poder manejar mejor tu dispositivo y sacarle más provecho a tu Windows Phone. ¿Comenzamos?
Cambio entre apps
Esto es lo más controvertido en cuanto a llamarlo "multitarea", los de Microsoft parece que aplican la definición de concurrencia a rajatabla, aplicando que vale con que los hilos/procesos existan al mismo tiempo, pero sólo uno se ejecute en un periodo determinado de tiempo. Los informáticos argumentarán que esto es siempre así, ya que es una limitación de hardware, y tienen razón, pero intento ponerlo simple: en Windows Phone, cuando una aplicación pasa a segundo plano se deja de ejecutar por completo en el procesador, sólo existe en la memoria RAM, se queda "dormida" existiendo en memoria principal, pausa todas sus acciones, como descargas, un ejemplo claro es si abres Carbon, empiezas a cargar tuits y cambias a otra app, la música puede seguirse reproduciendo gracias a servicios de sistema de Zune. Resumiendo: cuando una aplicación pasa a segundo plano, la misma se suspende, entendiendo suspenderse como en un laptop cuando cierras la tapa, las aplicaciones siguen estando en memoria RAM, pero no las está ejecutando el procesador.
Ahora bien, existe el caso en que el usuario tenga muchas aplicaciones abiertas, y como la memoria RAM está limitada físicamente, se debe encontrar un método para que quepan más, a este método se le llama tombstoning, que es, comparándolo con un PC, cuando hibernas: la aplicación se cierra, pero los datos con los que estabas trabajando en la aplicación se mantienen en memoria principal (RAM). Aquí es cuando aparece el dichoso mensaje de "Reanudando...", lo que realmente está haciendo es volver a abrir la aplicación y cargarle los datos con los que trabajabas.
Mucho ojo, estos métodos sólo funcionan cuando cambias entre aplicaciones manteniendo la tecla de atrás pulsada, cuando estás en X aplicación, vuelves al home y reabres X desde ahí, es otra instancia completamente nueva, algo de lo que ya me quejaba en la reseña del Nokia Lumia 900 y que me parece inaceptable.
Resumen: usa siempre que puedas el fast app switching manteniendo la tecla de atrás presionada y seleccionando la aplicación a la que quieras volver, teniendo en cuenta que estas aplicaciones no estarán para siempre en memoria. Los juegos no corren en segundo plano, aunque deberían mantener su estado.
Tareas en segundo plano
En Windows Phone, todo lo que no interactúe con la pantalla táctil o no se esté enseñando, son tareas o aplicaciones en segundo plano, a quienes les afectan los casos de arriba, con matices: cada aplicación puede tener un agent que sí se puede ejecutar en background, aunque están bastante limitados; para resumir, estos agentes son:
- Audio en segundo plano.
- Tareas programadas.
- Transferencia de ficheros en segundo plano.
- Notificaciones programadas.
Como ya os habíais imaginado, cada una tiene sus limitaciones, por ejemplo en la transferencia de ficheros en segundo plano no puedes usar ficheros de más de 5Mb, la descarga máxima son 20Mb en 3G y 100Mb en Wi-Fi si el teléfono no está conectado a la red de electricidad.
Dentro de las tareas programadas, hay dos tipos: "Agentes periódicos" que pueden correr cada 30 minutos y no pueden tardar más de 25s en ejecutarse y "agentes con uso de recursos intensivo" que pueden tardar hasta 10 minutos ejecutándose. ¿Para qué sirve esta diferenciación? Creo que está bastante claro, que cada uno se use cuando se debería (según la tarea a realizar) y poder ahorrar batería, ese gran dolor de cabeza de los smartphones de hoy en día. El primero, que sólo puede ejecutarse durante 25s se usa, sobre todo, para actualizar live tiles, como cuántos mensajes nuevos tienes en una red social. En el segundo caso, las intensivas, el desarrollador puede poner más restricciones, dado su uso para descargar grandes archivos, como podcasts, por ejemplo, que sólo se ejecute si está sobre una red Wi-Fi.
Resumen: ten en cuenta que es muy probable que esos mapas que pusiste a descargar justo antes de salir de casa no volverán a descargarse hasta que vuelvas a ella, probablemente, tu factura en el plan de datos que tengas contratado te lo agradecerán.
Notificaciones
En Mango puedes notificar al usuario de una acción por dos lados: as famosas live tiles o las notificaciones normales. En las dos formas puedes usar dos maneras: notificaciones programadas o push. Sin ninguna duda las notificaciones push son las más costosas, en primer lugar tienes que montar un servidor que recopile la información que quieres enviar al terminal, luego pasar por el servicio de Microsoft Push Notificacion Service, finalmente es este el encargado de enviarlo al teléfono y que tu aplicación recoja la información, así trabajan WhatsApp y aplicaciones de mensajería instantánea (no así Skype, donde solo puedes recibir llamadas mientras la tengas en primer plano).
Resumen: no es tan simple la aparición de un mensaje del estilo "Mamá: trae leche, porfa" en WhatsApp, detrás eso hay una infraestructura que trabaja muy bien y muy rápido.