Opções de tarefas em segundo plano da transferência de dados

Muitos apps precisam transferir dados em segundo plano. Esta página ajuda a encontrar a abordagem certa para suas necessidades.

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, o DownloadManager não oferece todos os recursos de depuração e teste que estão disponíveis em WorkManager e JobScheduler

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.

Concluir uma tarefa curta e crítica

Use um serviço em primeiro plano shortService.

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.

Outros recursos

Para saber mais sobre essa mudança nos serviços em primeiro plano, consulte as páginas abaixo recursos adicionais: