Dar soporte a tu aplicación mediante 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
Los temas de esta sección muestran cómo ejecutar tu propio código ligero en segundo plano al responder a los desencadenadores con tareas en segundo plano. Las tareas en segundo plano son archivos JavaScript independientes que el SO ejecuta en segundo plano. Puedes usar tareas en segundo plano para proporcionar funcionalidad cuando la aplicación esté suspendida o no se esté ejecutando. En JavaScript, también puedes ejecutar tareas en segundo plano en un temporizador.
Las tareas en segundo plano usan el espacio de nombres Windows.UI.WebUI.WebUIBackgroundTaskInstance para obtener información acerca de la instancia actual de la tarea en segundo plano. Las tareas en segundo plano se registran usando un objeto BackgroundTaskBuilder. El archivo JavaScript de la tarea en segundo plano se especifica como punto de entrada al registrar la tarea en segundo plano.
Para comenzar rápidamente con una tarea en segundo plano, consulta Inicio rápido: creación y registro de una tarea en segundo plano.
Tareas en segundo plano para eventos del sistema
Puedes hacer que tu aplicación responda a eventos generados por el sistema registrando una tarea en segundo plano con SystemTrigger. Una aplicación puede usar cualquiera de los siguientes desencadenadores de eventos del sistema (como se define en SystemTriggerType) sin que se coloquen en la pantalla de bloqueo.
Nombre del desencadenador | Descripción |
---|---|
InternetAvailable |
Internet pasa a estar disponible. |
NetworkStateChange |
Se produce un cambio en la red, como un cambio en el costo o la conectividad. |
OnlineIdConnectedStateChange |
Cambia el identificador en línea asociado a la cuenta. |
SmsReceived |
Se ha recibido un nuevo mensaje SMS por un dispositivo instalado de banda ancha móvil. |
TimeZoneChange |
La zona horaria cambia en el dispositivo (por ejemplo, cuando el sistema ajusta el reloj al horario de verano). |
Para obtener más información, consulta Cómo responder a eventos del sistema con tareas en segundo plano.
Condiciones para tareas en segundo plano
Puedes controlar cuándo se ejecuta la tarea en segundo plano, incluso después de que se desencadene, agregando una condición. Una vez desencadenada, la tarea en segundo plano no se ejecutará hasta que se cumplan todas las condiciones. Se pueden usar las siguientes condiciones (representadas por la enumeración SystemConditionType).
Nombre de la condición | Descripción |
---|---|
InternetAvailable | Internet debe estar disponible. |
InternetNotAvailable | Internet no debe estar disponible. |
SessionConnected | La sesión debe estar conectada. |
SessionDisconnected | La sesión no debe estar conectada. |
Para obtener más información, consulta Cómo establecer condiciones para ejecutar una tarea en segundo plano.
Requisitos del manifiesto de la aplicación
Antes de que la aplicación pueda registrar correctamente una tarea en segundo plano, debe estar declarada en el manifiesto de la aplicación. Para obtener más información, consulta Cómo declarar tareas en segundo plano en el manifiesto de la aplicación.
Tareas en segundo plano para aplicaciones compatibles con la pantalla de bloqueo
Las aplicaciones pueden colocarse en la pantalla de bloqueo para mostrar al usuario información en tiempo real de un vistazo. Se pueden usar los siguientes desencadenadores en tiempo real para ejecutar código personalizado ligero en segundo plano para aplicaciones que están en la pantalla de bloqueo:
Canal de control: Las tareas en segundo plano pueden mantener una conexión activa y recibir mensajes en el canal de control, usando el ControlChannelTrigger. Si quieres más información, consulta el procedimiento para usar el desencadenador del canal de control. (Ten en cuenta que las tareas en segundo plano del canal de control solo se pueden implementar en C# o C++). ControlChannelTrigger no se admite en Windows Phone.
Temporizador: Las tareas en segundo plano se pueden ejecutar cada 15 minutos y se pueden configurar para ejecutarse a una determinada hora, usando el TimeTrigger. Para obtener más información, consulta Cómo ejecutar una tarea en segundo plano en un temporizador.
Notificación de inserción: Las tareas en segundo plano responden al PushNotificationTrigger para recibir notificaciones de inserción sin procesar. Para más información, consulta el tema sobre el procedimiento para recibir notificaciones sin procesar.
Nota Solo aplicaciones de la Tienda Windows. El usuario debe colocar la aplicación en la pantalla de bloqueo antes de que la aplicación pueda usar estas tareas en segundo plano. Una aplicación puede solicitar acceso a la pantalla de bloqueo llamando a RequestAccessAsync. Esto presenta un cuadro de diálogo donde se le pregunta al usuario si desea "permitir" o "no permitir" que la aplicación esté en la pantalla de bloqueo. Una aplicación solo puede solicitar acceso a la pantalla de bloqueo una vez; todas las llamadas posteriores a RequestAccessAsync se omitirán.
Nota
Las aplicaciones de la Tienda de Windows Phone pueden usar todos los desencadenadores en segundo plano admitidos sin que se anclen en la pantalla de bloqueo. Sin embargo, una aplicación de teléfono debe llamar al RequestAccessAsync antes de registrar cualquier tipo de desencadenador 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 (aplicaciones de Windows en tiempo de ejecución).
Desencadenadores de eventos del sistema para aplicaciones compatibles con la pantalla de bloqueo
Nota La enumeración de SystemTriggerType incluye los siguientes desencadenadores de eventos del sistema que sólo pueden usar las aplicaciones compatibles con la pantalla de bloqueo. Se debe colocar una aplicación en la pantalla de bloqueo antes de que pueda registrar una tarea en segundo plano con cualquiera de estos desencadenadores de eventos del sistema.
Nombre del desencadenador | Descripción |
---|---|
UserPresent |
La tarea en segundo plano se desencadena cuando el usuario pasa a estar presente. |
UserAway |
La tarea en segundo plano se desencadena cuando el usuario pasa a estar ausente. |
ControlChannelReset |
La tarea en segundo plano se desencadena cuando se restablece un canal de control. |
SessionConnected |
La tarea en segundo plano se desencadena cuando se conecta la sesión, |
Los siguientes desencadenadores de eventos del sistema también corresponden a aplicaciones compatibles con la pantalla de bloqueo. Estos desencadenadores se pueden registrar incluso cuando la aplicación no está en la pantalla de bloqueo, lo cual permite reconocer el momento en que el usuario colocó o retiró la aplicación de la pantalla de bloqueo.
Nombre del desencadenador | Descripción |
---|---|
LockScreenApplicationAdded |
Un icono dinámico de la aplicación se agrega a la pantalla de bloqueo. |
LockScreenApplicationRemoved |
Un icono dinámico de la aplicación se quita de la pantalla de bloqueo. |
Restricciones de recursos de las tareas en segundo plano
Las tareas en segundo plano son ligeras. Mantener la ejecución en segundo plano en unos mínimos garantiza la mejor experiencia del usuario con las aplicaciones en primer plano y una mayor vida de la batería. Esto se logra aplicando restricciones de recursos a las tareas en segundo plano:
El uso de la CPU está limitado de la siguiente manera:
Cuota de uso de la CPU Tiempo de actualización Aplicación de Windows que no está en la pantalla de bloqueo 1 segundo
2 horas
Aplicación de Windows que está en la pantalla de bloqueo 2 segundos
15 minutos
Aplicación de Windows Phone 2 segundos
15 minutos
Cuando funciona con batería (corriente continua), las tareas en segundo plano también tienen un límite en el uso de datos de red. Este límite es una función de la cantidad de energía usada por la interfaz de red, así que varía según el dispositivo y el entorno de red, pero se puede calcular.
La siguiente tabla caracteriza el rendimiento de datos de red, en ella se asume una red WiFi con restricción de recursos capaz de un rendimiento de datos medio de 1 Mbps. Para estimar el límite correcto, multiplica por los megabits por segundo medios (Mbps) de la conexión. Por ejemplo, una aplicación puede usar 25 MB de datos cada 2 horas en una conexión WiFi de 10Mbps, si se encuentra en la pantalla de bloqueo. La interfaz WiFi del ejemplo asume una interferencia mínima.
Período de actualización 15 minutos 2 horas Diariamente Límite de datos (en la pantalla de bloqueo) 0,469 MB n/a 45 MB Límite de datos (no en la pantalla de bloqueo) n/a 0,625 MB 7,5 MB Nota El límite de uso de datos de red aumenta cuando el dispositivo está enchufado (corriente alterna), pero se sigue aplicando la cuota de uso de la CPU. Del mismo modo, se suspenden las restricciones de CPU y recursos de red de las tareas en segundo plano de una aplicación mientras el usuario está interactuando con ella en primer plano.
Restricciones adicionales de recursos de las tareas en segundo plano para las aplicaciones de la Tienda de Windows Phone
Además de las restricciones de recursos descritas en la sección anterior, las tareas en segundo plano de las aplicaciones de la Tienda de Windows Phone también tienen las restricciones siguientes.
Restricciones de memoria
Debido a las restricciones de recursos para el factor de forma del teléfono, en especial para los dispositivos con poca memoria, las tareas en segundo plano para las aplicaciones de Windows Phone tienen un límite de memoria que determina la cantidad máxima de memoria que puede usar la tarea en segundo plano. Si la tarea en segundo plano supera este límite, finalizará inmediatamente. La asignación de memoria depende del tipo de tarea en segundo plano, así como de la memoria total del sistema del dispositivo en el que se ejecuta. Debes tener en cuenta estos límites cuando desarrollas y pruebas tu aplicación. También puedes utilizar las API del MemoryManager para consultar el uso actual de la memoria y limitarlo para ajustar tu uso en el tiempo de ejecución. En esta tabla te mostramos los límites de memoria, en megas, para los tipos de tarea en segundo plano especificados para las distintas cantidades de memoria total del sistema en el dispositivo.
Tipo de tarea en segundo plano | 512 MB | 1 GB | 2 GB o más |
---|---|---|---|
Ubicación | 16 | 30 | 40 |
Bluetooth | 16 | 16 | 16 |
Mantenimiento finalizado | 10 | 10 | 10 |
Otras tareas en segundo plano | 16 | 30 | 40 |
Límite al depurar | 30 | 40 | 50 |
Límite por dispositivo para aplicaciones con tareas en segundo plano para dispositivos de baja memoria
En los teléfonos con 512 MB de memoria, existe un límite para el número de aplicaciones que se pueden instalar en un dispositivo y para el uso de tareas en segundo plano en cualquier momento. Si se supera este número, la llamada a RequestAccessAsync, que es necesaria para registrar todas las tareas en segundo plano en Windows Phone, producirá un error.
Ahorro de batería
En Windows Phone, la característica de ahorro de batería, cuando está habilitada, evita que las tareas en segundo plano se ejecuten cuando el dispositivo no esté conectado a alimentación externa y la batería esté por debajo de una cantidad de energía especificada. Esto no impide que puedas registrar tareas en segundo plano.
Desencadenador de mantenimiento
Tu aplicación también puede ejecutar tareas cada 15 minutos usando el desencadenador de mantenimiento. En lugar de requerir la colocación en la pantalla de bloqueo, las tareas de mantenimiento solo se ejecutan cuando el dispositivo está enchufado a corriente alterna. Para obtener más información, consulta Cómo usar desencadenadores de mantenimiento.
Tarea en segundo plano para sensores y dispositivos
La aplicación puede acceder a sensores y dispositivos periféricos desde una tarea en segundo plano con la clase DeviceUseTrigger. Puedes usar este desencadenador para operaciones de larga duración como, por ejemplo, la sincronización o supervisión de datos. A diferencia de las tareas para eventos del sistema, una tarea DeviceUseTrigger solo se puede desencadenar mientras tu aplicación se está ejecutando en primer plano y no se puede establecer en ella ninguna condición. En función de dónde se esté ejecutando (PC o teléfono), una tarea DeviceUseTrigger en segundo plano admite diferentes API y está sujeta a distintas políticas. Para obtener más información acerca de estas diferencias, consulta Obtener acceso a sensores y dispositivos desde una tarea en segundo plano.
Algunas operaciones críticas del dispositivo, como las actualizaciones del firmware que se ejecutan durante mucho tiempo, no se pueden realizar con DeviceUseTrigger. Esas operaciones solo se pueden realizar en el equipo y solo las puede realizar una aplicación privilegiada que use DeviceServicingTrigger. Una aplicación privilegiada es una aplicación que ha recibido la autorización del fabricante del dispositivo para realizar esas operaciones. Los metadatos del dispositivo se usan para especificar qué aplicación, si es el caso, se ha designado como aplicación privilegiada para un dispositivo. Para obtener más información, consulta el tema sobre sincronización y actualización de dispositivos para aplicaciones de dispositivo de la Tienda Windows.
Administrar tareas en segundo plano
Las tareas en segundo plano pueden notificar progreso, finalización o cancelación a tu aplicación usando eventos y almacenamiento local. La aplicación también puede capturar excepciones generadas por una tarea en segundo plano, y administrar el registro de tareas en segundo plano durante las actualizaciones de la aplicación. Si quieres obtener más información, consulta:
Cómo administrar una tarea en segundo plano cancelada
Cómo obtener una lista de tareas en segundo plano pendientes
Cómo supervisar el progreso y la finalización de tareas en segundo plano
Cómo usar el desencadenador ServicingComplete
Temas relacionados
Guía conceptual para multitarea en Windows 8
Introducción a las tareas en segundo plano
Inicio, reanudación y multitarea
Instrucciones de interfaz de usuario para la pantalla de bloqueo
Visualización de iconos en la pantalla de bloqueo
Directrices y lista de comprobación de iconos de pantalla de bloqueo
Guía de tareas en segundo plano relacionadas
Directrices y lista de comprobación de tareas en segundo plano
Cómo depurar una tarea en segundo plano
Acceder a sensores y dispositivos desde una tarea en segundo plano
Sincronización y actualización de dispositivos para aplicaciones de dispositivo de la Tienda Windows