Many apps need to transfer data in the background. This page helps you find the right approach for your needs.
Casos de uso de migração
Esta seção descreve algumas situações comuns em que os apps precisam transferir dados de ou para o dispositivo, e ajuda você a escolher a ferramenta certa para seus situação.
- Transferência de dados pela rede
Se a transferência tiver sido iniciada pelo usuário e você precisar manter o usuário informado sobre o progresso da transferência, use a transferência de dados iniciada pelo usuário APIs. Caso contrário, use o WorkManager ou uma tipo apropriado de serviço em primeiro plano.
Se você precisar programar um download, também poderá usar
DownloadManager
DownloadManager
gerencia as e faz novas tentativas de download após falhas, reinicializações de dispositivos e mudanças de conectividade. No entanto, oDownloadManager
não oferece todos os recursos de depuração e teste que estão disponíveis emWorkManager
eJobScheduler
- Como transferir dados de ou para um dispositivo local
Use uma API específica, se houver uma disponível (como a API de dispositivo complementar) gerente) caso contrário, use um
connectedDevice
em primeiro plano serviço.- Como transcodificar mídia
Use o novo tipo de serviço em primeiro plano
mediaProcessing
.- Concluir uma tarefa curta e crítica
- Processamento de arquivos (por exemplo, transferência de dados de ou para um cartão SD, redimensionamento de conteúdo, criptografia ou descriptografia de dados)
Se a tarefa puder ser concluída em menos de três minutos, use um
shortService
serviço em primeiro plano. Caso contrário, use o WorkManager.
Usar as APIs de transferência de dados iniciada pelo usuário
Se o seu aplicativo precisar transferir dados para um servidor remoto, você pode querer usar o novas APIs de transferência de dados iniciada pelo usuário. Essas APIs são apropriadas é verdadeiro:
- O usuário iniciou a transferência de dados
- Você precisa manter o usuário notificado sobre o progresso da transferência de dados
- É prejudicial para a experiência do usuário se o sistema interromper a transferência
Se alguma dessas condições não for atendida, use o WorkManager. como alternativa.
Por exemplo, um app de música pode permitir que os usuários façam o download de álbuns para reproduzir localmente. Se um um usuário quiser fazer o download de uma playlist e reproduzi-la imediatamente, recomendamos usar as APIs de transferência de dados iniciada pelo usuário. Por outro lado, se o usuário quiser playlist baixada ser atualizada periodicamente em segundo plano sem que o usuário início, o WorkManager seria uma escolha melhor.
Para mais informações, consulte a documentação sobre como migrar serviços em primeiro plano para jobs de transferência de dados iniciados pelo usuário.
Usar o WorkManager
Na maioria dos casos, o WorkManager é a melhor opção quando você precisa agendar um trabalho. Você precisa projetar as tarefas de forma que possam ser interrompidas ou adiadas pelo sistema. Para saber mais, consulte a documentação do WorkManager.
Confira algumas observações que podem ser úteis ao migrar de um primeiro plano serviço para o WorkManager:
- Se você precisa executar o trabalho o mais rápido possível, agende uma solicitação de trabalho priorizado. Essa opção é especialmente útil se você estiver agendar o trabalho em resposta a uma transmissão, alarme exato ou mensagem de alta prioridade do FCM.
- Se você precisa que o trabalho seja executado periodicamente, agende periodicamente funcionam. Uma solicitação de trabalho periódico permite especificar aproximadamente com que frequência do trabalho será executado, mas não garante um tempo específico. Isso permite que sistema para agendar solicitações de trabalho de diferentes apps para equilibrar as demandas no dispositivo.
- Você deve definir restrições de trabalho para especificar os circunstâncias para executar seu job. Por exemplo, se o app precisa fazer o download recursos não urgentes, você pode especificar que o trabalho deve ser executado enquanto o dispositivo está carregando e conectado a uma rede ilimitada. O WorkManager pode e executar o job em um horário que equilibre a carga no sistema.
- O WorkManager é sem custo financeiro para cancelar e tentar executar um job novamente, se necessário. Por exemplo: o usuário pode desligar o dispositivo enquanto um job está em execução; o sistema pode e tentar realizar o trabalho novamente quando o dispositivo estiver disponível novamente. Certifique-se de projetar e teste seu fluxo de trabalho para garantir que o ciclo de cancelamento e nova tentativa funcione corretamente.
Usar um tipo de serviço em primeiro plano mais específico
Se não for possível mudar para outra maneira de fazer o trabalho em segundo plano, você ainda pode
precisa usar um serviço em primeiro plano. Nesse caso, você deve encontrar um
tipo de serviço a ser usado em vez de dataSync
. Como seu código já usa
em primeiro plano, a migração é simples. você só precisa escolher
o tipo apropriado de serviço em primeiro plano e confira se o app atende
os requisitos do serviço.
Como sempre, ao considerar usar um serviço em primeiro plano, considere existe uma API alternativa melhor e mais personalizada para você caso.
Usar um serviço curto em primeiro plano
Caso o app precise executar uma tarefa curta e crítica, use uma shortService
em primeiro plano
serviço pode ser a melhor opção. Confira algumas situações em que um shortService
serviço em primeiro plano pode ser apropriado:
- O usuário inicia uma ação (como sincronizar dados com o servidor) e você quer para garantir que a operação seja concluída mesmo que o usuário envie imediatamente a em segundo plano.
- Salva informações na memória no armazenamento permanente.
- Criptografar ou descriptografar informações.
Para informações completas, consulte a documentação do shortService
.
Usar um serviço em primeiro plano de dispositivo conectado
Se precisar transferir dados para outro dispositivo local, use um
Serviço em primeiro plano connectedDevice
. Aqui estão algumas situações comuns
em que você pode precisar fazer isso:
- Como se comunicar com um acessório Bluetooth, como fones de ouvido ou um smartwatch
- Transferência de dados para um dispositivo conectado localmente por uma conexão USB, NFC ou uma conexão local de Internet
No entanto, nessas situações, você pode usar o dispositivo complementar de app para se conectar ao dispositivo em vez de usar um serviço em primeiro plano. Como sempre, se uma API para fins especiais estiver disponível para seu caso de uso, isso geralmente é melhor do que usar um serviço em primeiro plano.
Usar o novo serviço em primeiro plano de processamento de mídia
Caso você precise processar dados de mídia, use o novo mediaProcessing
serviço em primeiro plano. Esse tipo de serviço está disponível se o app for direcionado ao Android
15 ou superior. Por exemplo, este tipo de serviço é apropriado se
seu app precisa transcodificar mídia de um formato para outro para reprodução. Para
mais informações, consulte a
documentação do serviço em primeiro plano de processamento de mídia.
Outros recursos
Para saber mais sobre essa mudança nos serviços em primeiro plano, consulte as páginas abaixo recursos adicionais:
- Orientações para trabalho em segundo plano
- Postagem do blog: Como melhorar a consistência do trabalho em segundo plano em Android