Articles

Programar tareas con WorkManager Parte de Android Jetpack.

WorkManager es una API que facilita la programación de tareas diferibles y asíncronas que se espera que se ejecuten incluso si la aplicación sale o el dispositivo se reinicia. La API WorkManager es un reemplazo adecuado y recomendado para todas las anteriores APIs de programación en segundo plano de Android, incluyendo FirebaseJobDispatcher, GcmNetworkManager y Job Scheduler. WorkManagerincorpora las características de sus predecesores en una API moderna y coherente que funciona hasta el nivel 14 de la API, a la vez que es consciente de la duración de la batería.

Bajo el capó, WorkManager utiliza un servicio de envío de trabajos subyacente basado en los siguientes criterios:

If the device is running on API Level 23 or higher, JobScheduler is used. OnAPI Levels 14-22, GcmNetworkManager is chosen if it's available, otherwise, acustom AlarmManager and BroadcastReciever implementation is used as afallback.

Nota: Si su aplicación se dirige a Android 10 (nivel de API 29) o superior, sus llamadas a la API de FirebaseJobDispatcher y GcmNetworkManager ya no funcionarán en los dispositivos que ejecuten Android Marshmallow (6.0) y superior. Siga las guías de migración de FirebaseJobDispatcher y GcmNetworkManager para obtener orientación sobre la migración. Además, consulte el anuncio de Unifying Background Task Scheduling onAndroid para obtener más información sobre su eliminación.

Características

Además de proporcionar una API más sencilla y coherente, WorkManager tiene otras ventajas clave, entre las que se incluyen:

Constricciones de trabajo

Defina de forma selectiva las condiciones óptimas para que su trabajo se ejecute mediante WorkConstraints.(Por ejemplo, ejecutar sólo cuando el dispositivo es Wi-Fi, cuando el dispositivo está inactivo, o cuando tiene suficiente espacio de almacenamiento, etc.)

Programación

WorkManager le permite programar el trabajo para que se ejecute una sola vez o repetidamente utilizando ventanas de programación flexibles. El trabajo se puede etiquetar y nombrar también, lo que le permite programar trabajo único y reemplazable y supervisar o cancelar grupos de trabajo juntos. El trabajo programado se almacena en una base de datos SQLite gestionada internamente y WorkManager se encarga de asegurar que este trabajo persiste y se reprograma a través de los reinicios del dispositivo. Además, WorkManager se adhiere a las funciones de ahorro de energía y a las mejores prácticas, como el modo Doze, para que no tenga que preocuparse por ello.

Política de reintentos flexible

A veces el trabajo falla. WorkManager ofrece políticas de reintento flexibles, incluida una política de retroceso exponencial configurable.

Encadenamiento de trabajos

Para trabajos complejos relacionados, encadene tareas de trabajo individuales utilizando una interfaz fluida y natural que le permita controlar qué piezas se ejecutan de forma consecutiva y cuáles en paralelo.

Kotlin

WorkManager.getInstance(...) .beginWith(listOf(workA,workB)) .then(workC) .enqueue()

Java

WorkManager.getInstance(...) .beginWith(Arrays.asList(workA, workB)) .then(workC) .enqueue();

Para cada tarea de trabajo, puede definir los datos de entrada y salida para ese trabajo. Cuando se encadenan trabajos, WorkManager pasa automáticamente los datos de salida de una tarea de trabajo a la siguiente.

Interoperabilidad de Threading

WorkManager se integra perfectamente con RxJava y Coroutines y proporciona la flexibilidad necesaria para conectar sus propias API asíncronas.

Utiliza WorkManager para trabajos aplazables y fiables

WorkManager está pensado para trabajos que son aplazables -es decir, que no es necesario que se ejecuten inmediatamente- y que es necesario que se ejecuten de forma fiable incluso si la aplicación sale o el dispositivo se reinicia. Por ejemplo:

  • Enviar registros o análisis a los servicios de backend
  • Sincronizar periódicamente los datos de la aplicación con un servidor

WorkManager no está pensado para el trabajo en segundo plano durante el proceso que puede terminarse con seguridad si el proceso de la aplicación desaparece o para el trabajo que requiere una ejecución inmediata. Por favor, revise la guía de procesamiento en segundo plano para ver qué solución se ajusta a sus necesidades.

Cómo empezar

Consulte la guía Cómo empezar para comenzar a utilizarWorkManager en su aplicación.