Cómo usar el desencadenador de mantenimiento (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 cómo usar la clase MaintenanceTrigger para ejecutar código ligero en segundo plano mientras el dispositivo está enchufado.

Lo que debes saber

Tecnologías

Requisitos previos

  • Este ejemplo da por hecho que tienes un código ligero que puedes ejecutar en segundo plano para mejorar tu aplicación mientras el dispositivo está enchufado. Este tema se centra en la clase MaintenanceTrigger, que es similar al SystemTrigger en el que no es necesario que la aplicación esté en la pantalla de bloqueo para registrar una tarea en segundo plano de MaintenanceTrigger. Encontrarás más información sobre cómo escribir una clase de tarea en segundo plano en Inicio rápido: crear y registrar una tarea en segundo plano.

Instrucciones

Paso 1: Crear un objeto de desencadenador de mantenimiento

Crea un nuevo objeto MaintenanceTrigger. El segundo parámetro, OneShot, especifica si la tarea de mantenimiento se ejecutará una vez o seguirá ejecutándose periódicamente. Si OneShot se establece en true, el primer parámetro (FreshnessTime) especifica el número de minutos que deben esperarse antes de programar la tarea en segundo plano. Si OneShot se establece en false, FreshnessTime especifica la frecuencia con la que se ejecutará la tarea en segundo plano.

Nota  Si FreshnessTime se establece en menos de 15 minutos, se iniciará una excepción cuando se intente registrar una tarea en segundo plano.

 

Este código de ejemplo crea un desencadenador que se ejecuta una vez cada hora:

var waitIntervalMinutes = 60;

var taskTrigger = new Windows.ApplicationModel.Background.MaintenanceTrigger(waitIntervalMinutes, 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 la tarea debe ejecutarse. 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 el mantenimiento se ejecuta cuando el usuario está activo (o cuando vuelva a estarlo). Para obtener una lista de posibles condiciones de tareas en segundo plano, consulta SystemConditionType.

El siguiente código agrega una condición al generador de tareas de mantenimiento:

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

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 = “Maintenance background task example”;

var task = RegisterBackgroundTask(entryPoint, taskName, taskTrigger, 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

Los eventos de desencadenador de mantenimiento no se activarán a menos que el dispositivo esté enchufado.

Nota  Si el dispositivo no está enchufado, todas las tareas de mantenimiento actualmente en ejecución e iniciadas por el MaintenanceTrigger se cancelan (cancelReason = Abort). Si la tarea en segundo plano no se cancela 5 segundos después de recibir el evento de tarea en segundo plano cancelada, se procederá a su finalización. Para más información, consulta el tema sobre cómo controlar una tarea en segundo plano cancelada.

 

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 responder a eventos del sistema con tareas en segundo plano

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

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