Restrições e agendamento
Execute o trabalho nas condições adequadas.
Restrições e agendamento é uma aula grátis de Android Academy no CoddyKit. Esta é a aula 3 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.
Restrições e agendamento
Um trabalhador define o que fazer. Um WorkRequest define quando e sob quais condições ele será executado. Você cria uma solicitação, adiciona restrições e a enfileira.
O que são restrições
Restrições são condições que devem ser verdadeiras antes da execução do trabalho, como ter uma conexão de rede ou estar conectado ao carregador. O WorkManager espera até que elas sejam atendidas.
Criando restrições
Use Constraints.Builder para declarar seus requisitos.
val constraints = Constraints.Builder()
.setRequiredNetworkType(NetworkType.UNMETERED)
.setRequiresCharging(true)
.build()Tipos comuns de restrição
Entre as restrições usadas com frequência estão:
setRequiredNetworkType(CONNECTED, UNMETERED etc.)setRequiresChargingsetRequiresBatteryNotLowsetRequiresDeviceIdlesetRequiresStorageNotLow
Criando uma OneTimeWorkRequest
Para trabalhos executados uma vez, use OneTimeWorkRequestBuilder, parametrizado com a classe do seu trabalhador, e adicione as restrições.
val request = OneTimeWorkRequestBuilder<UploadWorker>()
.setConstraints(constraints)
.build()Passando dados de entrada
Adicione dados de entrada à solicitação com setInputData; o trabalhador os lê por meio de inputData.
val request = OneTimeWorkRequestBuilder<UploadWorker>()
.setInputData(workDataOf("user_id" to "42"))
.setConstraints(constraints)
.build()Enfileirando o trabalho
Obtenha a instância de WorkManager e chame enqueue. O WorkManager mantém a solicitação de forma persistente e a executa quando as restrições são atendidas.
WorkManager.getInstance(context).enqueue(request)Política de espera progressiva
Quando um trabalhador retorna retry(), o WorkManager espera antes de tentar novamente. Configure a estratégia com setBackoffCriteria, escolhendo uma espera progressiva linear ou exponencial.
val request = OneTimeWorkRequestBuilder<UploadWorker>()
.setBackoffCriteria(
BackoffPolicy.EXPONENTIAL,
10, TimeUnit.SECONDS
)
.build()Trabalho exclusivo
Para evitar o agendamento de trabalhos duplicados, use enqueueUniqueWork com um nome e uma política de conflito (KEEP, REPLACE ou APPEND).
WorkManager.getInstance(context).enqueueUniqueWork(
"sync_job",
ExistingWorkPolicy.KEEP,
request
)Observando o estado do trabalho
Você pode observar o status de uma solicitação (ENQUEUED, RUNNING, SUCCEEDED, FAILED) por meio de getWorkInfoByIdFlow ou LiveData, o que é útil para mostrar o progresso na interface.
WorkManager.getInstance(context)
.getWorkInfoByIdFlow(request.id)
.collect { info -> /* react to info.state */ }Adicionando etiquetas
Adicione etiquetas às solicitações com addTag para poder consultar ou cancelar posteriormente grupos de trabalhos relacionados por etiqueta, por exemplo, cancelando todos os trabalhos de "envio" de uma só vez.
Verificação rápida
Teste sua compreensão sobre restrições e agendamento.
Recapitulação
Você agendou um trabalho com restrições:
Constraints.Builderdefine condições como rede e carregamentoOneTimeWorkRequestBuildercria a solicitaçãoenqueue/enqueueUniqueWorka envia- Configure a espera progressiva, observe o estado e adicione etiquetas ao trabalho
Próximo tópico: trabalhos periódicos e encadeados.
Perguntas Frequentes
A aula “Restrições e agendamento” é grátis?
Sim — o texto completo de “Restrições e agendamento” é 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 “Restrições e agendamento”?
Execute o trabalho nas condições adequadas. 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 3 de 4.
Quanto tempo leva a aula “Restrições e agendamento”?
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
- Quando usar o WorkManager
- Criando um Worker
- Restrições e agendamento
- Tarefas periódicas e encadeadas