O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

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:

Se o dispositivo estiver executando API de nível 23 ou mais recente, o JobScheduler será usado. Nos
níveis 14 a 22 da API, o GcmNetworkManager será escolhido, se estiver disponível. Caso contrário, uma
implementação personalizada do AlarmManager e do BroadcastReceiver será usada como
substituta.

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

Blogs