Cómo ejecutar una tarea en segundo plano en un temporizador (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 programar una tarea en segundo plano única o ejecutar una tarea en segundo plano periódica asociada con tu aplicación de la Tienda Windows. Si el usuario coloca tu aplicación en la pantalla de bloqueo, la aplicación podrá registrar una tarea en segundo plano que se ejecute hasta cada 15 minutos en Windows y cada 30 minutos en Windows Phone. Por ejemplo, una tarea en segundo plano podría usarse para proporcionar actualizaciones de distintivos e iconos periódicas.
Lo que debes saber
Tecnologías
Requisitos previos
- En este ejemplo se da por hecho que tienes una tarea en segundo plano que necesita ejecutarse periódicamente o en un momento específico para admitir tu aplicación. En Windows, una tarea en segundo plano solamente se ejecuta mediante TimeTrigger si has solicitado que tu aplicación se coloque en la pantalla de bloqueo con una llamada a RequestAccessAsync y el usuario ha aceptado el mensaje. En Windows Phone, debes realizar una llamada a RequestAccessAsync, pero no se le pedirá confirmación al usuario. Para obtener más información, consulta el tema sobre visualización de iconos en la pantalla de bloqueo.
- Este tema da por hecho que ya has creado una clase de tarea en segundo plano, incluido el método Run que se usa como punto de entrada de la tarea en segundo plano. Para comenzar rápidamente a crear una tarea en segundo plano, consulta Inicio rápido: creación y registro de una tarea en segundo plano. Para obtener información más detallada acerca de condiciones y desencadenadores, consulta Dar soporte a tu aplicación mediante tareas en segundo plano.
Instrucciones
Paso 1: Crear un desencadenador de hora
Crea un nuevo TimeTrigger. El segundo parámetro, OneShot, especifica si la tarea en segundo plano 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.
Windows 8 tiene un temporizador integrado que ejecuta tareas en segundo plano en intervalos de 15 minutos. No olvides que en Windows Phone el intervalo es de 30 minutos.
Si FreshnessTime se establece en 15 minutos y OneShot tiene el valor true, la tarea se ejecutará una vez comenzando entre el minuto 0 y el 15 desde el momento en que se registre.
Si FreshnessTime se establece en 15 minutos y OneShot tiene el valor false, la tarea se ejecutará cada 15 minutos comenzando entre el minuto 0 y el 15 desde el momento en que se registre.
Nota Si FreshnessTime se establece en menos de 15 minutos, se iniciará una excepción cuando se intente registrar una tarea en segundo plano.
Por ejemplo, este desencadenador hará que una tarea en segundo plano se ejecute una vez cada hora:
var hourlyTrigger = new Windows.ApplicationModel.Background.TimeTrigger(60, 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, al desencadenarse, la tarea solo se ejecuta cuando el usuario esté activo. Para obtener una lista de posibles condiciones, consulta SystemConditionType.
El siguiente código agrega una condición a la tarea en segundo plano:
var userCondition = new Windows.ApplicationModel.Background.SystemCondition(Windows.ApplicationModel.Background.SystemConditionType.UserPresent);
Paso 3: Solicitar acceso a la pantalla de bloqueo
Antes de intentar registrar la tarea en segundo plano TimeTrigger, solicita permiso del usuario para agregarla a la pantalla de bloqueo llamando a RequestAccessAsync.
En Windows, el siguiente código abre un cuadro de diálogo al usuario, donde se le solicita que agregue tu aplicación a la pantalla de bloqueo. En el teléfono, solo se pide al sistema que conceda a tu aplicación la capacidad de realizar tareas en segundo plano:
Windows.ApplicationModel.Background.BackgroundExecutionManager.RequestAccessAsync();
Nota Una aplicación puede solicitar acceso a la pantalla de bloqueo solamente una vez. El usuario puede elegir solo una de las dos opciones y se establecerá su preferencia. Las llamadas posteriores a RequestAccessAsync no se tendrán en cuenta.
Paso 4: 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 = “Example hourly background task”;
var task = RegisterBackgroundTask(entryPoint, taskName, hourlyTrigger, userCondition);
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
Nota En Windows, las tareas en segundo plano solo se registrarán con un desencadenador de hora si el usuario ha agregado tu aplicación a la pantalla de bloqueo; consulta Visualización de iconos en la pantalla de bloqueo. Las tareas en segundo plano pueden asociarse con desencadenadores que no requieren que la aplicación esté en la pantalla de bloqueo. Para obtener una guía sobre estos tipos de desencadenadores de tarea en segundo plano, 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 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