O processamento de dados em segundo plano é uma parte importante da criação de um aplicativo para Android que seja responsivo para os usuários e uma boa adição à Plataforma Android. Este guia define categorias de tarefas em segundo plano, fornece critérios para classificar suas tarefas e recomenda as APIs que você precisa usar para executá-las.
Princípios orientadores
Em geral, toda tarefa que leve mais de alguns milissegundos precisa ser delegada a uma linha de execução em segundo plano. Tarefas comuns de longa duração incluem, por exemplo, decodificar um bitmap, acessar armazenamento, trabalhar em um modelo de aprendizado de máquina (ML) ou realizar solicitações de rede.
Categorias de tarefas em segundo plano
As tarefas em segundo plano se enquadram em uma das seguintes categorias principais:
- Imediata
- Adiada
- Exata
Para classificar uma tarefa, responda às perguntas a seguir e passe pela árvore de decisão correspondente na Figura 1:
- A tarefa precisa ser concluída enquanto o usuário está interagindo com o aplicativo?
- Em caso afirmativo, essa tarefa deve ser classificada para execução imediata. Caso contrário, prossiga para a segunda pergunta.
- A tarefa precisa ser executada em um horário exato?
- Se você precisar executar uma tarefa em um horário exato, classifique-a como exata.
A maioria das tarefas não precisa ser executada em um horário exato. As tarefas geralmente permitem pequenas variações quando são executadas com base em condições como disponibilidade de rede e bateria restante. As tarefas que não precisam ser executadas em um horário exato devem ser classificadas como adiadas.

Soluções recomendadas
As seções a seguir descrevem as soluções recomendadas para cada tipo de tarefa em segundo plano.
Tarefas imediatas
Recomendamos corrotinas de Kotlin para tarefas que precisam
terminar quando o usuário sai de um determinado escopo ou conclui uma interação.
Muitas bibliotecas do Android KTX contêm escopos de corrotina prontos
para componentes comuns do app, como
ViewModel
e
ciclos de vida
comuns do app.
Para usuários de linguagem de programação Java, consulte Linhas de execução no Android para conhecer as opções recomendadas.
Para tarefas que precisam ser executadas imediatamente e precisam de processamento contínuo,
mesmo que o usuário coloque o aplicativo em segundo plano ou o dispositivo seja reiniciado,
recomendamos o uso de WorkManager
e compatibilidade com tarefas de longa duração.
Em casos específicos, como com a reprodução de mídia ou a navegação ativa, é recomendável usar diretamente os serviços em primeiro plano.
Tarefas adiadas
Cada tarefa que não está diretamente conectada a uma interação do usuário e pode ser executada
a qualquer momento no futuro pode ser adiada. A solução recomendada para
tarefas adiadas é WorkManager
.
O WorkManager
facilita a programação de tarefas adiadas e assíncronas que
devem ser executadas mesmo que o app seja fechado ou o dispositivo seja reiniciado. Consulte a
documentação de WorkManager
para aprender a programar esses tipos de tarefas.
Tarefas exatas
Uma tarefa que precisa ser executada em um momento exato pode usar
AlarmManager
.
Para saber mais sobre AlarmManager
, consulte
Programar alarmes recorrentes.