WorkManager para Kotlin: guía completa con ejemplos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Introducción a WorkManager para Kotlin

\n\n

WorkManager es una biblioteca de Google para Android, diseñada para ejecutar tareas en segundo plano que deben garantizarse incluso si el dispositivo se reinicia o la aplicación se cierra. Forma parte de Android Jetpack y proporciona una API simple y confiable para programar tareas diferidas, periódicas y únicas.

\n\n

El objetivo principal de WorkManager es reemplazar los mecanismos obsoletos de trabajo en segundo plano, como Service o AsyncTask, y garantizar la compatibilidad con diferentes versiones de Android (desde API 14+). La biblioteca elige automáticamente la mejor manera de ejecutar la tarea: JobScheduler (API 23+), AlarmManager + BroadcastReceiver (versiones más antiguas) o Firebase JobDispatcher (si está conectado).

\n\n

WorkManager es ideal para escenarios como: sincronización de datos con el servidor, envío de análisis, descarga de archivos, procesamiento de imágenes, copias de seguridad, envío de notificaciones push y cualquier otra tarea que no requiera ejecución inmediata, pero que deba completarse en un futuro cercano.

\n\n

Instalación de WorkManager

\n\n

WorkManager no se instala a través de pip o npm, ya que es una biblioteca para Android (Kotlin/Java). Para agregarla a su proyecto, debe modificar el archivo build.gradle (nivel de módulo).

\n\n

Paso 1: Abra el archivo build.gradle de su módulo (app/build.gradle).

\n\n

Paso 2: Agregue la dependencia en el bloque dependencies:

\n\n
dependencies {\n    implementation "androidx.work:work-runtime-ktx:2.9.0"\n}
\n\n

Paso 3: Sincronice el proyecto (Sync Now).

\n\n

Si usa Kotlin DSL, la dependencia se verá así:

\n\n
dependencies {\n    implementation("androidx.work:work-runtime-ktx:2.9.0")\n}
\n\n

Importante: La versión 2.9.0 es la actual al momento de escribir este artículo. Se recomienda verificar la última versión en el sitio oficial de Android Developers.

\n\n

Inicio rápido con ejemplo de código

\n\n

Veamos un ejemplo muy simple: crearemos una tarea en segundo plano que imprime un registro en Logcat.

\n\n

Paso 1: Cree la clase Worker

\n\n
import android.content.Context\nimport android.util.Log\nimport androidx.work.Worker\nimport androidx.work.WorkerParameters\n\nclass SimpleWorker(context: Context, params: WorkerParameters) : Worker(context, params) {\n\n    override fun doWork(): Result {\n        Log.d("SimpleWorker", "¡Tarea en segundo plano ejecutada!")\n        // Aquí puede realizar cualquier operación larga\n        return Result.success()\n    }\n}
\n\n

Paso 2: Programe la ejecución de la tarea

\n\n
import androidx.work.OneTimeWorkRequestBuilder\nimport androidx.work.WorkManager\n\nval workRequest = OneTimeWorkRequestBuilder<SimpleWorker>()\n    .build()\n\nWorkManager.getInstance(context).enqueue(workRequest)
\n\n

Después de llamar a enqueue(), la tarea se ejecutará en breve (generalmente en unos segundos, si no hay restricciones).

\n\n

Métodos y funciones principales de WorkManager

\n\n

1. OneTimeWorkRequestBuilder

\n

Qué hace: Crea una solicitud única para ejecutar una tarea. La tarea se ejecuta una vez y luego se elimina de la cola.

\n

Parámetros:

\n
    \n
  • workerClass (obligatorio) — clase que hereda de Worker o CoroutineWorker.
  • \n
  • setInitialDelay() — retraso antes de la ejecución (en milisegundos).
  • \n
  • setConstraints() — restricciones (por ejemplo, conexión a internet).
  • \n
  • addTag() — etiqueta para agrupar tareas.
  • \n
  • setInputData() — datos de entrada para el Worker.
  • \n
\n

Recommendations