Windows Phone - Métodos AndContinue
Intermedio
Windows Phone 8.1 trae consigo numerosas innovaciones para los desarrolladores y ha optimizado de diversas formas el desempeño de sus API's para enfrentar diferentes escenarios.
Estos escenarios en dispositivos móbiles son muy variados, principalmente a lo relacionado con el hardware.
No es lo mismo programar para una tablet o para un smartphone gama alta que hacerlo para un smartphone de bajos recursos. En muchas situaciones tu app puede ejecutarse de manera normal en la mayoria de dispositivos pero en un dispositivo de poca memoria las cosas se pueden poner adversas. Muy adversas.
APIs intensivas en el uso de Memoria
Algunas API hacen uso intenso de la memoria por naturaleza, dos fácilmente identificables son las relacionadas con autenticación OAuth y la exploración de archivos.
Y no es para menos, en el caso del WebAuthenticationBroker
, esta clase en escencia abre un browser dentro de tu app para permitir realizar la autenticación en un servicio de Open Authentication, si tienes poca memoria esto será un dolor de cabeza, porqué?
Por el propio funcionamiento del sandbox/runtime de Windows Phone, cuando no hay recursos suficientes para que un app se ejecuté, esta deja de funcionar y por ende el runtime procede a cerrarla. Puede que esto no pase muy a menudo, pero un día un usuario tendra otro par de apps abiertas y de repente tu app cae en estado de muerte.
Con los componentes para exploración de archivos como FileOpenPicker
, FileSavePicker
y FolderPicker
sucede exacamente lo mismo.
Para solucionar este impase el equipo de genios de Microsoft desarrollo un nuevo patrón de ejecución de estas API's de tal forma que el desarrollador tuvieses poder para lidiar con estos inconvenientes de manera más fluida. Creo el patrón AndContinue
en estas API's pero de ser necesario un desarrollador puede incorporarlo en sus propuis componentes.
Cómo funciona?
Para poder hacer uso de estas funcionalidades las App deben soportar la suspención y activación, y aunque esto lo puedes hacer por cuenta propia siempre puedes ahorrarte esfuerzo haciendo uso de los templates de apps que vienen en Visual Studio los cuales ya tienen soportada esta funcionalidad.
Como lo vemos en el gráfico básicamente la app sigue su ciclo de ejecución normal hasta que se hace uso de algun componente intensivo en memoria.
Estos componente se ejecutan dentro de un contexto de proceso diferente al de la aplicación.
Cuando se llama uno de los métodos AndContinue de estos componentes el sistema coloca la app en segundo plano, lo cual según sea el caso puede dejar la app cargada en memoria o matar el proceso de la app definitivamente.
Tal como esta la app todos los datos de su ejecución en ese momento quedan guardados para cuando sea reactivada.
Una vez el componente ejecuta su acción de salida el sistema procede a activar nuevamente la app.
Al activarse hay que detectar si la app fue suspendida por una operación AndContinue
y de ser allí llamar el ContinueMethod
correspondiente de tal forma que la app continue su ejecución normalmente.
En un próximo artículo les enseñaré como utilizar WebAuthenticationBroker haciendo uso de métodos AndContinue.