Cómo suspender una aplicación (HTML)

[ Este artículo está destinado a desarrolladores de Windows 8.x y Windows Phone 8.x que escriben aplicaciones de Windows en tiempo de ejecución. Si estás desarrollando para Windows 10, consulta la documentación más reciente

Aprende a guardar los datos importantes de la aplicación de Windows en tiempo de ejecución cuando el sistema la suspende. Cuando el sistema suspende la aplicación, puede finalizarla posteriormente sin previo aviso. Es importante guardar el estado actual del usuario en la aplicación para que cuando esta se reinicie puedas restaurar dicho estado. El usuario nunca debería saber que la aplicación se ha suspendido y finalizado en segundo plano.

Los siguientes pasos te mostrarán cómo registrarse para el evento checkpoint y usarlo para guardar el estado básico de la aplicación.

Instrucciones

Paso 1: Registrarse para el evento checkpoint

Haz el registro para el evento checkpoint en el ámbito global. Este evento indica que el sistema está suspendiendo tu aplicación. Después de que tu aplicación se suspende, el sistema puede finalizarla para liberar recursos del sistema. Debido a esto, es importante guardar los datos de tu aplicación durante el evento de punto de control.


var app = WinJS.Application;

app.addEventListener("checkpoint", checkpointHandler);

Paso 2: Guardar los datos de la aplicación antes de la suspensión

Cuando la aplicación controla el evento checkpoint, tiene la oportunidad de guardar sus datos de aplicación importantes en la función de controlador del evento checkpoint. La aplicación puede usar el objeto sessionState para guardar datos de aplicación simples de manera sincrónica. El objeto sessionState hace persistir los datos, de manera que la aplicación pueda tener a ellos durante la activación tras la finalización.

function checkpointHandler(eventArgs) 
{
    var stateObject = new Object();

    // TODO: Populate the state object with app data

    // Save the state object to the session object
    app.sessionState.stateObject = stateObject;
}

Paso 3: Liberar recursos exclusivos e identificadores de archivos

Cuando la aplicación controla el evento checkpoint, también tiene la oportunidad de liberar recursos exclusivos e identificadores de archivos. Algunos ejemplos de recursos exclusivos son las cámaras, los dispositivos de E/S, los dispositivos externos y los recursos de red. Liberar recursos exclusivos e identificadores de archivos sirve para que otras aplicaciones puedan acceder a ellos cuando la aplicación no está haciendo uso de ellos. Cuando la aplicación se active después de haberla finalizado, deberá abrir sus recursos exclusivos e identificadores de archivos.

Observaciones

El sistema suspende la aplicación cuando el usuario cambia a otra aplicación o al escritorio. El sistema reanuda la aplicación cuando el usuario vuelve a cambiar a ella. Cuando el sistema reanuda la aplicación, el contenido de las variables y las estructuras de datos es el mismo que antes de que el sistema la suspendiera. El sistema restaura la aplicación en el punto exacto en el que estaba, para que parezca al usuario que se ejecutaba en segundo plano

El sistema intenta mantener la aplicación y sus datos en memoria mientras está suspendida. Sin embargo, el sistema operativo puede finalizar tu aplicación por varios motivos después de haberse suspendido. Por ejemplo, esto puede producirse cuando el usuario cierra manualmente tu aplicación o cierra la sesión, o si el sistema se está quedando sin recursos. Cuando el usuario vuelve a una aplicación que ha finalizado, la aplicación recibe un evento activated y debe comprobar si sus objetos sessionState están definidos. Si los objetos están definidos, la aplicación debe cargar esos datos.

El sistema no notifica a una aplicación cuando finaliza su ejecución, de modo que la aplicación deberá guardar sus datos de aplicación y liberar los recursos exclusivos y los identificadores de archivos cuando se suspenda, y restaurarlos cuando se reanude después de haberse suspendido o se active después de haber finalizado.

Nota  Si necesitas realizar algún trabajo asincrónico durante la suspensión de la aplicación, deberás aplazar la suspensión hasta que haya finalizado ese trabajo. Puedes usar el método setPromise en la propiedad de detalles del argumento del evento checkpoint para retrasar la suspensión hasta que hayas completado la promesa.

 

Nota  Para mejorar la capacidad de respuesta del sistema en Windows 8.1 y en Windows Phone, las aplicaciones tienen acceso de prioridad baja a los recursos después de que entren en suspensión. Para admitir esta nueva prioridad, se ha ampliado el tiempo de espera de la operación de suspensión para que la aplicación tenga el equivalente al tiempo de espera de 5 segundos para la prioridad normal en Windows y entre 1 y 10 segundos en Windows Phone. No puedes ampliar ni modificar este período de tiempo de espera.

 

Nota acerca de la depuración con Microsoft Visual Studio: Visual Studio evita que Windows suspenda una aplicación que esté conectada al depurador. Esto permite que el usuario vea la interfaz de usuario de depuración de Visual Studio mientras se ejecuta la aplicación. Mientras depuras una aplicación, puedes enviarle un evento de suspensión mediante Visual Studio. Asegúrate de que se muestra la barra de herramientas Ubicación de depuración y luego haz clic en el botón Suspender.

Ejemplo completo

Consulta la muestra de cómo activar y suspender aplicaciones mediante WinJS y la muestra de cómo activar, reanudar y suspender aplicaciones mediante WRL para ver ejemplos de código completo donde se muestra cómo controlar los eventos de ciclo de vida de las aplicaciones.

Temas relacionados

Tareas

Cómo activar una aplicación

Cómo reanudar una aplicación

Conceptos

Ciclo de vida de la aplicación

Directrices

Directrices para suspender y reanudar una aplicación

Referencia

WinJS.Application.checkpoint

WinJS.Application.sessionState