Cómo establecer condiciones para ejecutar una tarea 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 cómo establecer condiciones para ejecutar tu tarea en segundo plano que ayudan a que se ejecute cuando corresponde. En ocasiones, las tareas en segundo plano requieren que se cumplan ciertas condiciones, además del evento que desencadena la tarea, para que la tarea en segundo plano se desarrolle correctamente. Puedes especificar una o más de las condiciones especificadas por SystemConditionType al registrar tu tarea en segundo plano. La condición se comprobará después de que se active el desencadenador; la tarea en segundo plano se pondrá en cola, pero no se ejecutará hasta que se satisfagan todas las condiciones.

Establecer condiciones sobre las tareas en segundo plano ahorra vida útil de batería y tiempo de ejecución de CPU evitando que las tareas se ejecuten innecesariamente. Por ejemplo, si una tarea en segundo plano se ejecuta en un temporizador y requiere conectividad a Internet, agrega la condición InternetAvailable al TaskBuilder antes de registrar la tarea. Esto ayudará a impedir que la tarea use recursos del sistema y consuma batería de forma innecesaria dejando que se ejecute cuando haya transcurrido el temporizador e Internet esté disponible.

Lo que debes saber

Tecnologías

Requisitos previos

  • Este tema asume que ya tienes una tarea en segundo plano asociada con tu aplicación, y que tu aplicación ya incluye código que crea un objeto BackgroundTaskBuilder llamado taskBuilder.

Instrucciones

Paso 1: Crear un objeto SystemCondition

Antes de agregar la condición, crea un objeto SystemCondition que representa la condición que debe estar vigente para que una tarea en segundo plano se ejecute. En el constructor, especifica la condición que debe cumplirse proporcionando un valor de enumeración SystemConditionType.

El siguiente código crea un objeto SystemCondition que especifica la disponibilidad de Internet como requisito condicional:

var internetCondition = new Windows.ApplicationModel.Background.SystemCondition(Windows.ApplicationModel.Background.SystemConditionType.InternetAvailable);

Paso 2: Agregar el objeto SystemCondition a la tarea en segundo plano

Para agregar una condición, llama al método AddCondition en el objeto BackgroundTaskBuilder y pásalo al objeto SystemCondition.

El siguiente código registra la condición de tarea en segundo plano InternetAvailable con TaskBuilder:

taskBuilder.AddCondition(internetCondition);

Paso 3: Registrar tu tarea en segundo plano

Ahora ya puedes registrar tu tarea en segundo plano con el método Register y la tarea no comenzará hasta que no se satisfaga la condición especificada.

El siguiente código registra la tarea y almacena el objeto BackgroundTaskRegistration resultante:


var task = taskBuilder.Register();

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.

 

Paso 4: Colocar varias condiciones en tu tarea en segundo plano

Para agregar varias condiciones, tu aplicación realiza varias llamadas al método AddCondition. Estas llamadas deben recibirse antes de que el registro de la tarea sea efectivo.

Nota  Ten cuidado de no agregar condiciones conflictivas a una tarea en segundo plano.

 

En el siguiente fragmento se muestran múltiples condiciones en el contexto de la creación y registro de una tarea en segundo plano:

var hourlyTrigger = new Windows.ApplicationModel.Background.TimeTrigger(60, false);

var recurringTaskBuilder = new Windows.ApplicationModel.Background.BackgroundTaskBuilder();

recurringTaskBuilder.Name = "Hourly background task for YourApp";
recurringTaskBuilder.TaskEntryPoint = "js\\ExampleBackgroundTask.js";
recurringTaskBuilder.SetTrigger(hourlytrigger);

//
// Begin adding conditions.
//
var userCondition = new Windows.ApplicationModel.Background.SystemCondition(Windows.ApplicationModel.Background.SystemConditionType.UserPresent);
var internetCondition = new Windows.ApplicationModel.Background.SystemCondition(Windows.ApplicationModel.Background.SystemConditionType.InternetAvailable);

taskBuilder.AddCondition(userCondition);
taskBuilder.AddCondition(internetCondition);

//
// Done adding conditions. Now we register the background task.
//
var task = recurringTaskBuilder.Register();

Observaciones

Nota  Selecciona las condiciones adecuadas para tu tarea en segundo plano de forma que solo se ejecute cuando sea necesaria, y que no se ejecute cuando no vaya a funcionar. Consulta SystemConditionType para obtener descripciones de las diferentes condiciones de las 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 responder a eventos del sistema con tareas 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