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
CoroutineWorkere substitua odoWork()suspend - Retorne
Result.success(),Result.retry()ouResult.failure() - Leia
inputDatae retorneDatade saída - Use
Dispatchers.IOpara 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.