Programar tarefas com o WorkManager Parte do Android Jetpack.
O WorkManager é uma API que facilita a programação de tarefas adiáveis e assíncronas que precisam ser executadas mesmo que o app seja fechado ou o dispositivo seja reiniciado. A API WorkManager é uma substituição adequada e recomendada para todas as APIs anteriores de programação do Android executadas em segundo plano, incluindo FirebaseJobDispatcher, GcmNetworkManager e Job Scheduler. O WorkManager incorpora os recursos dos antecessores em uma API moderna e consistente que funciona desde o nível 14 da API e respeita a duração da bateria.
Em segundo plano, o WorkManager usa um serviço de expedição de jobs subjacente com base nos seguintes critérios:
Observação: se o app for direcionado ao Android 10 (API de nível 29) ou a uma versão mais recente, suas chamadas de API FirebaseJobDispatcher e GcmNetworkManager não funcionarão mais em dispositivos com o Android Marshmallow (6.0) e versões mais recentes. Siga os guias de migração para FirebaseJobDispatcher e GcmNetworkManager para receber orientação. Consulte também o anúncio Como unificar a programação de tarefas em segundo plano no Android (link em inglês) para ver mais informações sobre a suspensão de uso.
Recursos
Além de oferecer uma API mais simples e consistente, o WorkManager tem vários outros benefícios importantes, incluindo:
Restrições de trabalho
Defina de forma declarativa as condições ideais para a execução do seu trabalho usando Restrições de trabalho. Você pode definir, por exemplo, que o trabalho seja executado apenas quando o dispositivo tiver Wi-Fi, quando o dispositivo estiver ocioso ou quando ele tiver espaço de armazenamento suficiente etc.
Programação robusta
O WorkManager permite que você programe um trabalho para ser executado uma única vez ou repetidamente usando janelas de programação flexíveis. O trabalho também pode receber uma tag e um nome, o que permite programar trabalhos exclusivos e substituíveis e monitorar ou cancelar grupos de trabalho ao mesmo tempo. O trabalho programado é armazenado em um banco de dados SQLite gerenciado internamente, e o WorkManager se encarrega de garantir que esse trabalho persista e seja reprogramado nas reinicializações do dispositivo. Além disso, o WorkManager cumpre os recursos de economia de energia e as práticas recomendadas, como o modo Soneca. Assim, você não precisa se preocupar com esses aspectos.
Política flexível de nova tentativa
Às vezes, o trabalho falha. O WorkManager oferece políticas flexíveis de nova tentativa, incluindo uma política de espera exponencial configurável.
Encadeamento de trabalho
Para trabalhos complexos relacionados, encadeie tarefas de trabalho individuais usando uma interface fluente e natural que permita controlar quais tarefas são executadas sequencialmente e quais são executadas em paralelo.
Kotlin
WorkManager.getInstance(...) .beginWith(listOf(workA,workB)) .then(workC) .enqueue()
Java
WorkManager.getInstance(...) .beginWith(Arrays.asList(workA, workB)) .then(workC) .enqueue();
Para cada tarefa de trabalho, é possível definir dados de entrada e saída para o trabalho em questão. Ao encadear trabalhos, o WorkManager transmite automaticamente os dados de saída de uma tarefa de trabalho para a próxima.
Interoperabilidade de linha de execução integrada
O WorkManager se integra perfeitamente a RxJava e Coroutines, oferecendo flexibilidade para você conectar suas APIs assíncronas.
Usar o WorkManager para trabalhos adiáveis e confiáveis
O WorkManager é destinado a trabalhos adiáveis, ou seja, que não precisam ser executados imediatamente e que precisam ser executados de maneira confiável, mesmo que o app seja fechado ou o dispositivo seja reiniciado. Exemplo:
- Envio de registros ou análises para serviços de back-end
- Sincronização periódica de dados do app com um servidor
O WorkManager não se destina a trabalhos em andamento em segundo plano que podem ser encerrados com segurança quando o processo do app é encerrado ou a trabalhos que exigem execução imediata. Consulte o guia para o processamento em segundo plano para ver qual solução atende às suas necessidades.
Primeiros passos
Consulte o Guia de primeiros passos para começar a usar o WorkManager no seu app.
Outros recursos
Vídeos
- Como trabalhar com o WorkManager, da Conferência de Desenvolvedores Android 2018
- WorkManager: além dos princípios básicos, da Conferência de Desenvolvedores Android 2019
Blogs
- Primeiros passos com o WorkManager (link em inglês)