Sobes.tech
Junior

O que é o WorkManager?

sobes.tech IA

Resposta da IA

O WorkManager é a solução recomendada no Android para a execução diferida de trabalhos em segundo plano garantidos, que devem ser realizados mesmo que a aplicação seja fechada ou o dispositivo seja reiniciado.

Faz parte do conjunto de bibliotecas Android Jetpack e oferece uma forma flexível e confiável de programar tarefas.

Vantagens principais:

  • Execução garantida: O WorkManager garante a execução do trabalho em segundo plano, mesmo que a aplicação seja forçosamente parada ou o dispositivo seja reiniciado.
  • Suporte a constraints: Permite definir condições para a execução do trabalho (por exemplo, disponibilidade de rede, carga da bateria).
  • Suporte a tarefas únicas e periódicas: Pode programar tarefas tanto únicas quanto recorrentes.
  • Suporte à cancelamento de trabalho: Fornece mecanismos para cancelar trabalhos agendados.
  • Compatibilidade com diferentes versões do Android: Usa as APIs apropriadas dependendo da versão do sistema operativo (JobScheduler, AlarmManager e BroadcastReceiver).
  • Suporte a gráficos de trabalho complexos: Permite combinar várias tarefas em cadeias ou grupos paralelos.

Componentes principais:

  • Worker: Define o trabalho real que deve ser realizado.
  • WorkRequest: Define como e quando o trabalho deve ser realizado. Existem OneTimeWorkRequest e PeriodicWorkRequest.
  • WorkManager: Planeja e gerencia WorkRequest.

Exemplo de uso:

// Criar um WorkRequest para uma tarefa única
val uploadWorkRequest: WorkRequest =
    OneTimeWorkRequestBuilder<MyUploadWorker>()
        .build()

// Agendar a tarefa
WorkManager.getInstance(context).enqueue(uploadWorkRequest)
// Exemplo de classe Worker
class MyUploadWorker(
    appContext: Context,
    workerParams: WorkerParameters
) : Worker(appContext, workerParams) {

    override fun doWork(): Result {
        // Aqui realiza-se trabalho pesado ou em segundo plano
        return Result.success() // ou Result.failure(), Result.retry()
    }
}