0Pricing
Android Academy · Lección

Restricciones y programación

Ejecute el trabajo en las condiciones adecuadas

Restricciones y programación es una lección gratuita de Android Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Android Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Android Academy incluye 4 lecciones en total.

Restricciones y programación

Un Worker define qué hacer. Un WorkRequest define cuándo y en qué condiciones se ejecuta. Cree una solicitud, añádale restricciones y póngala en cola.

Qué son las restricciones

Las restricciones son condiciones que deben cumplirse antes de que se ejecute el trabajo, como disponer de conexión de red o estar conectado a un cargador. WorkManager espera hasta que se cumplen.

Crear restricciones

Use Constraints.Builder para declarar sus requisitos.

val constraints = Constraints.Builder()
    .setRequiredNetworkType(NetworkType.UNMETERED)
    .setRequiresCharging(true)
    .build()

Tipos habituales de restricciones

Entre las restricciones más utilizadas se incluyen:

  • setRequiredNetworkType (CONNECTED, UNMETERED, etc.)
  • setRequiresCharging
  • setRequiresBatteryNotLow
  • setRequiresDeviceIdle
  • setRequiresStorageNotLow

Crear un OneTimeWorkRequest

Para trabajos que se ejecutan una sola vez, use OneTimeWorkRequestBuilder, parametrizado con la clase de su worker, y añada las restricciones.

val request = OneTimeWorkRequestBuilder<UploadWorker>()
    .setConstraints(constraints)
    .build()

Pasar datos de entrada

Añada datos de entrada a la solicitud con setInputData; el worker los lee mediante inputData.

val request = OneTimeWorkRequestBuilder<UploadWorker>()
    .setInputData(workDataOf("user_id" to "42"))
    .setConstraints(constraints)
    .build()

Poner el trabajo en cola

Obtenga la instancia de WorkManager y llame a enqueue. WorkManager conserva la solicitud y la ejecuta cuando se cumplen las restricciones.

WorkManager.getInstance(context).enqueue(request)

Política de espera progresiva

Cuando un worker devuelve retry(), WorkManager espera antes de volver a intentarlo. Configure la estrategia con setBackoffCriteria, eligiendo una espera progresiva lineal o exponencial.

val request = OneTimeWorkRequestBuilder<UploadWorker>()
    .setBackoffCriteria(
        BackoffPolicy.EXPONENTIAL,
        10, TimeUnit.SECONDS
    )
    .build()

Trabajo único

Para evitar programar trabajos duplicados, use enqueueUniqueWork con un nombre y una política de conflicto (KEEP, REPLACE o APPEND).

WorkManager.getInstance(context).enqueueUniqueWork(
    "sync_job",
    ExistingWorkPolicy.KEEP,
    request
)

Observar el estado del trabajo

Puede observar el estado de una solicitud (ENQUEUED, RUNNING, SUCCEEDED, FAILED) mediante getWorkInfoByIdFlow o LiveData, lo que resulta útil para mostrar el progreso en la interfaz.

WorkManager.getInstance(context)
    .getWorkInfoByIdFlow(request.id)
    .collect { info -> /* react to info.state */ }

Añadir etiquetas

Añada etiquetas a las solicitudes con addTag para poder consultar o cancelar más adelante grupos de trabajos relacionados por etiqueta; por ejemplo, cancelar de una vez todos los trabajos de «subida».

Comprobación rápida

Compruebe cuánto ha entendido sobre las restricciones y la programación.

Resumen

Ha programado un trabajo con restricciones:

  • Constraints.Builder establece condiciones como la red y la carga
  • OneTimeWorkRequestBuilder crea la solicitud
  • enqueue / enqueueUniqueWork la envía
  • Configure la espera progresiva, observe el estado y añada etiquetas al trabajo

A continuación: trabajos periódicos y encadenados.

Preguntas frecuentes

¿La lección «Restricciones y programación» es gratis?

Sí — el texto completo de «Restricciones y programación» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Android Academy, actualiza a CoddyKit PRO. El curso de Android Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Restricciones y programación»?

Ejecute el trabajo en las condiciones adecuadas Practicas Android Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Android Academy?

No se requiere experiencia previa. Android Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «Restricciones y programación»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Android Academy?

Sí. Cada lección de Android Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Cuándo usar WorkManager
  2. Crear un Worker
  3. Restricciones y programación
  4. Trabajo periódico y encadenado
← Volver a Android Academy