Cómo programar tareas con WorkManager   Parte de Android Jetpack

La API de WorkManager facilita la programación de tareas diferibles y asincrónicas que se deben ejecutar incluso si la app se cierra o se reinicia el dispositivo.

Funciones principales:

  • Ofrece retrocompatibilidad hasta la API nivel 14.
    • Usa JobScheduler en dispositivos con API nivel 23 y posteriores.
    • Usa una combinación de BroadcastReceiver + AlarmManager en dispositivos con API nivel 14 a 22.
  • Agrega restricciones de trabajo, como la disponibilidad de la red o el estado de carga.
  • Programa tareas asíncronas únicas o periódicas.
  • Monitorea y administra tareas programadas.
  • Concatena tareas.
  • Garantiza la ejecución de tareas, incluso si la app o el dispositivo se reinician.
  • Se adhiere a las funciones de ahorro de energía, como el modo Descanso.

WorkManager está diseñado para tareas que son diferibles (es decir, que no es necesario ejecutarlas 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 tareas que requieren ejecución inmediata. Revisa la guía de procesamiento en segundo plano para ver qué solución satisface tus necesidades.

Para importar la biblioteca de WorkManager a tu proyecto de Android, agrega las siguientes dependencias al archivo build.gradle de tu app:

    dependencies {
      def work_version = "2.3.4"

        // (Java only)
        implementation "androidx.work:work-runtime:$work_version"

        // Kotlin + coroutines
        implementation "androidx.work:work-runtime-ktx:$work_version"

        // optional - RxJava2 support
        implementation "androidx.work:work-rxjava2:$work_version"

        // optional - GCMNetworkManager support
        implementation "androidx.work:work-gcm:$work_version"

        // optional - Test helpers
        androidTestImplementation "androidx.work:work-testing:$work_version"
      }
    

Temas

Conceptos básicos

Guías prácticas

Conceptos avanzados

Guías de migración

Recursos adicionales

Ejemplos

  • WorkManagerSample, una app de procesamiento de imágenes sencilla
  • Sunflower, una app de demostración que muestra las prácticas recomendadas con varios componentes de arquitectura, incluido WorkManager

Codelabs

Videos

Blogs