0Pricing
Android Academy · Aula

Criando um Worker

Defina tarefas em segundo plano em um Worker.

Criando um Worker é uma aula grátis de Android Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Android Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Android Academy inclui 4 aulas no total.

Criando um trabalhador

A unidade de trabalho em segundo plano do WorkManager é um trabalhador. Defina a tarefa criando uma subclasse de uma classe base de trabalhador e substituindo o método de trabalho.

CoroutineWorker

Para Kotlin, estenda CoroutineWorker. O doWork() é uma função suspend, portanto pode chamar outras funções suspend e ser executado naturalmente em um distribuidor em segundo plano.

class UploadWorker(
    context: Context,
    params: WorkerParameters
) : CoroutineWorker(context, params) {
    override suspend fun doWork(): Result {
        // background work here
        return Result.success()
    }
}

O construtor

Todo trabalhador recebe um Context e WorkerParameters em seu construtor e os passa para a superclasse. O WorkManager instancia o trabalhador para você; nunca chame o construtor diretamente.

doWork Retorna um Resultado

doWork() deve retornar um Result que descreva o resultado. Há três possibilidades.

  • Result.success()
  • Result.retry()
  • Result.failure()

Result.success

Retorne Result.success() quando o trabalho for concluído. O trabalho é removido da fila. Você pode anexar dados de saída para passá-los ao trabalho encadeado.

override suspend fun doWork(): Result {
    uploadLogs()
    return Result.success()
}

Result.retry

Retorne Result.retry() para uma falha temporária, como um erro de rede temporário. O WorkManager executa o trabalhador novamente mais tarde, de acordo com sua política de espera progressiva.

override suspend fun doWork(): Result {
    return try {
        syncData()
        Result.success()
    } catch (e: IOException) {
        Result.retry()
    }
}

Result.failure

Retorne Result.failure() para uma falha permanente que uma nova tentativa não corrigirá, como uma entrada inválida. O trabalho é interrompido e o trabalho encadeado dependente não será executado.

Lendo dados de entrada

Passe entradas pequenas por meio de Data ao enfileirar e leia-as com inputData dentro do trabalhador. Mantenha esses dados pequenos; eles não servem para cargas grandes.

override suspend fun doWork(): Result {
    val userId = inputData.getString("user_id") ?: return Result.failure()
    sync(userId)
    return Result.success()
}

Retornando dados de saída

Os trabalhadores podem retornar Data em seu resultado, e os trabalhadores encadeados recebem esses dados como entrada. É assim que você passa resultados entre etapas.

val output = workDataOf("count" to 42)
return Result.success(output)

Trabalhando com o distribuidor correto

CoroutineWorker executa doWork() em Dispatchers.Default por padrão. Para E/S bloqueante, alterne com withContext(Dispatchers.IO) para evitar esgotar o conjunto de encadeamentos padrão.

override suspend fun doWork(): Result = withContext(Dispatchers.IO) {
    readAndUploadFile()
    Result.success()
}

Mantenha os trabalhadores autocontidos

Um trabalhador pode ser executado muito tempo depois de ser agendado, em um processo novo. Não dependa do estado do aplicativo mantido na memória; passe o que for necessário por meio dos dados de entrada ou leia esses dados do armazenamento persistente.

Verificação rápida

Teste sua compreensão sobre a criação de um trabalhador.

Recapitulação

Você criou um trabalhador:

  • Estenda CoroutineWorker e substitua o doWork() suspend
  • Retorne Result.success(), Result.retry() ou Result.failure()
  • Leia inputData e retorne Data de saída
  • Use Dispatchers.IO para trabalhos bloqueantes; mantenha os trabalhadores autocontidos

Próximo tópico: restrições e agendamento.

Perguntas Frequentes

A aula “Criando um Worker” é grátis?

Sim — o texto completo de “Criando um Worker” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Android Academy, atualize para CoddyKit PRO. O curso de Android Academy inclui 4 aulas no total.

O que vou aprender em “Criando um Worker”?

Defina tarefas em segundo plano em um Worker. Você pratica Android Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Android Academy?

Nenhuma experiência prévia é necessária. Android Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.

Quanto tempo leva a aula “Criando um Worker”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Android Academy?

Sim. Cada aula de Android Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Quando usar o WorkManager
  2. Criando um Worker
  3. Restrições e agendamento
  4. Tarefas periódicas e encadeadas
← Voltar para Android Academy