Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.

Cómo programar tareas con WorkManager   Parte de Android Jetpack

WorkManager es una API que facilita la programación de tareas asíncronas y diferibles que se deben ejecutar incluso si se cierra la app o se reinicia el dispositivo. La API de WorkManager es un reemplazo adecuado y recomendado de todas las API anteriores de programación en segundo plano de Android, incluidas FirebaseJobDispatcher, GcmNetworkManager y JobScheduler. WorkManager incorpora las funciones de sus antecesores en una API moderna y coherente que funciona con el nivel de API 14 y tiene en cuenta la duración de batería.

En niveles más profundos, WorkManager usa un servicio subyacente de despacho de trabajos en función de los siguientes criterios:

Si el dispositivo ejecuta el nivel de API 23 o uno superior, se utiliza JobScheduler. En los niveles de API 14 a 22, se elige GcmNetworkManager si está disponible. De lo contrario, se utiliza como resguardo una implementación personalizada de AlarmManager y BroadcastReceiver.

Nota: Si la app se orienta a Android 10 (nivel de API 29) o versiones posteriores, tus llamadas a la API de FirebaseJobDispatcher y GcmNetworkManager ya no funcionarán en dispositivos que ejecutan Android Marshmallow (6.0) ni versiones posteriores. Si deseas obtener ayuda con la migración, consulta las guías de migración de FirebaseJobDispatcher y GcmNetworkManager. También puedes consultar el anuncio sobre la Unifying Background Task Scheduling on Android para obtener más información de su baja.

Funciones

Además de brindar una API más simple y coherente, WorkManager tiene otros beneficios clave, como los siguientes:

Restricciones de trabajos

Mediante las restricciones de trabajo, define de manera declarativa las condiciones óptimas que necesita tu trabajo para ejecutarse. (Por ejemplo, haz que se ejecute solo cuando el dispositivo esté conectado a una red Wi-Fi, esté inactivo, tenga suficiente espacio de almacenamiento, etcétera).

Programación sólida

WorkManager te permite programar un trabajo para que se ejecute una sola vez o periódicamente con ventanas de programación flexibles. También puedes etiquetar los trabajos y asignarles un nombre, lo que te permitirá programar trabajos únicos y reemplazables, así como supervisar o cancelar grupos de trabajo en forma conjunta. El trabajo programado se almacena en una base de datos SQLite administrada de forma interna, y WorkManager se encarga de garantizar que ese trabajo se conserve y se reprograme después de todos los reinicios del dispositivo. Además, WorkManager cumple con las funciones de ahorro de energía y las prácticas recomendadas, como el modo Descanso, para que no tengas que preocuparte por eso.

Política de reintento flexible

A veces, se producen errores en el trabajo. WorkManager ofrece políticas de reintento flexibles que incluyen una política de retirada exponencial configurable.

Encadenamiento de trabajos

Si tienes trabajos complejos que están relacionados, encadena las tareas individuales mediante una interfaz fluida y natural que te permite controlar qué partes se ejecutan de forma secuencial 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, puedes definir datos de entrada y salida. Si encadenas los trabajos, WorkManager pasa automáticamente los resultados de una tarea de trabajo a la siguiente.

Interoperabilidad de subprocesos integrada

WorkManager se integra a la perfección con RxJava y corrutinas, y es tan flexible que puede conectarse con tus propias API asíncronas.

Usa WorkManager para trabajos diferibles y confiables

WorkManager está diseñado para trabajos que son diferibles (es decir, que no es necesario ejecutarlos inmediatamente) y que se requieren para ejecutarse de manera confiable incluso si la app se cierra o el dispositivo se reinicia. Por ejemplo:

  • Envío de registros o análisis a servicios de backend
  • Sincroniza de manera periódica los datos de la app con un servidor.

WorkManager no está diseñado para el trabajo en segundo plano durante el proceso, que puede finalizar de manera segura si el proceso de la app desaparece, o para trabajos que requieren ejecución inmediata. Revisa la guía de procesamiento en segundo plano para ver qué solución satisface tus necesidades.

Cómo comenzar

Consulta la Guía de introducción a fin de comenzar a usar WorkManager en tu app.

Recursos adicionales

Videos

Blogs