Cómo responder a eventos del sistema con tareas en segundo plano (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 crear una tarea en segundo plano que responda a desencadenadores de eventos del sistema. Las aplicaciones de la Tienda Windows mantienen la experiencia del usuario, incluso cuando la aplicación no está en primer plano, mediante la asociación de código personalizado ligero con eventos SystemTrigger. Este código personalizado se ejecuta en tareas en segundo plano.

Lo que debes saber

Tecnologías

Requisitos previos

  • Este tema supone que tienes una clase de tareas en segundo plano escrita para tu aplicación, y que esta tarea necesita ejecutarse en respuesta a un evento desencadenado por el sistema, como es el hecho de que Internet vuelva a estar disponible o que el usuario inicie una sesión. Tu aplicación no tiene que estar en la pantalla de bloqueo para poder ejecutar tareas en segundo plano registradas usando las clases SystemTrigger y MaintenanceTrigger. Este tema se centra en la clase SystemTrigger. Para obtener más información sobre cómo escribir una clase de tarea en segundo plano, consulta Inicio rápido: creación y registro de una tarea en segundo plano.

Instrucciones

Paso 1: Crea un objeto SystemTrigger.

En el código de tu aplicación, crea un nuevo objeto SystemTrigger. El primer parámetro, triggerType, especifica el tipo de desencadenador de eventos del sistema que activará esta tarea en segundo plano. Para ver una lista de los tipos de eventos, consulta SystemTriggerType.

El segundo parámetro, OneShot, especifica si la tarea en segundo plano se ejecutará una vez la próxima ocasión que ocurra el evento del sistema y se desencadenen las tareas en segundo plano; o, cada vez que ocurra el evento del sistema, hasta que se elimine el registro de la tarea.

El siguiente código especifica que la tarea en segundo plano se ejecuta siempre que Internet vuelva a estar disponible:

var internetTrigger = new Windows.ApplicationModel.Background.SystemTrigger(InternetAvailable, false);

Paso 2: (Opcional) Agregar una condición

Si es necesario, agrega una condición a la tarea en segundo plano para controlar cuándo se ejecutará la tarea. Una condición evita que tu tarea en segundo plano se ejecute hasta que no se satisfaga la condición; para obtener más información, consulta Cómo establecer condiciones para ejecutar una tarea en segundo plano.

En este ejemplo, la condición se establece en UserPresent, de forma que la tarea en segundo plano solo se ejecuta cuando el usuario está usando activamente el dispositivo (o cuando el usuario está disponible). Para obtener una lista de posibles condiciones de tareas en segundo plano, consulta SystemConditionType.

El siguiente código agrega una condición a la tarea en segundo plano:

var exampleCondition = new Windows.ApplicationModel.Background.SystemCondition(Windows.ApplicationModel.Background.SystemCondition.UserPresent);

Paso 3: Registrar la tarea en segundo plano

Registra la tarea en segundo plano llamando a tu función de registro de tareas en segundo plano. Para obtener más información acerca del registro de tareas en segundo plano, consulta Cómo registrar una tarea en segundo plano.

El siguiente código registra la tarea en segundo plano:

var entryPoint = “js\\ExampleBackgroundTask.js”;
var taskName = “Internet-based background task”;

var task = RegisterBackgroundTask(entryPoint, taskName, internetTrigger, exampleCondition);

Nota  

En las aplicaciones de la Tienda de Windows Phone, debes llamar a RequestAccessAsync antes de intentar registrar cualquier tarea en segundo plano. En Windows, esta llamada solo es necesaria para el conjunto de tareas en segundo plano que requieren que tu aplicación esté en la pantalla de bloqueo para ejecutarse, pero en el teléfono debes llamar a este método una vez antes de registrar cualquier tarea en segundo plano.

Para garantizar que la aplicación de Windows Phone continúe funcionando correctamente después de publicar una actualización, se debe llamar a RemoveAccess y luego a RequestAccessAsync cuando se inicia la aplicación tras su actualización. Para obtener más información, consulta Directrices para tareas en segundo plano (HTML).

Nota  

A partir de Windows 8.1, los parámetros de registro de tareas en segundo plano se validan en el momento de realizar el registro. Se devuelve un error si cualquiera de los parámetros de registro no es válido. La aplicación debe poder enfrentarse a los escenarios en que se produce un error en el registro de tareas en segundo plano. Por ejemplo, usa una instrucción condicional para comprobar si hay errores de registro y después vuelve a probar el registro con errores con valores de parámetros diferentes.

 

Observaciones

Para ver el registro de una tarea en segundo plano en acción, descarga la muestra de tarea en segundo plano.

Las tareas en segundo plano pueden ejecutarse en respuesta a los eventos SystemTrigger y MaintenanceTrigger incluso sin colocarlas en la pantalla de bloqueo, pero aún deberás declarar las tareas en segundo plano en el manifiesto de la aplicación. En el teléfono, debes llamar a RequestAccessAsync antes de registrar cualquier tarea en segundo plano.

Las aplicaciones compatibles con la pantalla de bloqueo pueden registrar tareas en segundo plano que responden a los eventos TimeTrigger, PushNotificationTrigger y NetworkOperatorNotificationTrigger, permitiéndoles proporcionar una comunicación en tiempo real con el usuario incluso si la aplicación no está en el primer plano. Para obtener más información, consulta Dar soporte a tu aplicación mediante tareas en segundo plano.

Temas relacionados

Inicio rápido: creación y registro de una tarea en segundo plano

Cómo registrar una tarea en segundo plano

Cómo establecer condiciones para ejecutar una tarea en segundo plano

Cómo usar desencadenadores de mantenimiento

Cómo declarar tareas en segundo plano en el manifiesto de la aplicación

Cómo depurar una tarea en segundo plano

Directrices y listas de comprobación para tareas en segundo plano