Transferir dados com adaptadores de sincronização
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
Observação:recomendamos o WorkManager
como a solução para a maioria dos casos de uso de processamento em segundo plano. Consulte o
guia de processamento em segundo plano para saber qual solução funciona melhor para você.
A sincronização de dados entre um dispositivo Android e servidores da Web pode tornar seu app significativamente mais útil e atraente para os usuários. Por exemplo, a transferência de dados para um servidor
da Web faz um backup útil, e a transferência de dados de um servidor os disponibiliza para o usuário
mesmo quando o dispositivo está off-line. Em alguns casos, os usuários podem achar mais fácil inserir e editar os
dados em uma interface da Web e depois disponibilizar esses dados no dispositivo ou, então,
coletar dados ao longo do tempo e depois fazer upload deles para uma área de armazenamento central.
Embora você possa projetar seu próprio sistema para fazer transferências de dados no app, considere
usar o framework do adaptador de sincronização do Android. Esse framework ajuda a gerenciar e automatizar transferências
de dados e coordena operações de sincronização em diferentes apps. Ao usar esse framework, você pode aproveitar vários recursos que não estão disponíveis para esquemas de transferência de dados criados por você:
-
Arquitetura de plug-in
-
Permite adicionar o código de transferência de dados ao sistema na forma de componentes chamáveis.
-
Execução automatizada
-
Permite automatizar a transferência de dados com base em vários critérios, incluindo mudanças de dados,
tempo decorrido ou hora do dia. Além disso, o sistema adiciona transferências que não podem ser executadas em uma fila e as executa quando possível.
-
Verificação de rede automatizada
-
O sistema só executa a transferência de dados quando o dispositivo tem conectividade de rede.
-
Melhor desempenho da bateria
-
Permite que você centralize todas as tarefas de transferência de dados do seu app em um só lugar, para que todas sejam executadas ao mesmo tempo. A transferência de dados também é programada em conjunto com as de outros apps. Esses fatores reduzem o número de vezes que o sistema precisa
alternar na rede, o que reduz o uso da bateria.
-
Gerenciamento de contas e autenticação
-
Se o app exigir credenciais de usuário ou login no servidor, você poderá integrar o gerenciamento de contas e a autenticação à transferência de dados.
Esta aula mostra como criar um adaptador de sincronização e o Service
vinculado que o une, como fornecer os outros componentes que ajudam você a conectar o adaptador de sincronização ao framework e como executá-lo de várias maneiras.
Observação:os adaptadores de sincronização são executados de forma assíncrona. Portanto, use-os com a expectativa de que transfiram dados de maneira regular e eficiente, mas não de maneira instantânea. Se você precisar fazer uma transferência de dados em tempo real, use uma AsyncTask
ou um IntentService
.
Lições
-
Criar um autenticador de stubs
-
Aprenda a adicionar um componente de gerenciamento de conta que o framework do adaptador de sincronização espera que seja
parte do app. Esta lição mostra como criar um componente de autenticação stub para
simplificar.
-
Criar um provedor de conteúdo stub
-
Saiba como adicionar um componente de provedor de conteúdo que o framework do adaptador de sincronização espera que seja
parte do app. Esta lição pressupõe que seu app não usa um provedor de conteúdo, por isso
mostra como adicionar um componente stub. Se você já tiver um provedor de conteúdo no app,
poderá pular esta lição.
-
Criar um adaptador de sincronização
-
Saiba como encapsular seu código de transferência de dados em um componente que o framework do adaptador de sincronização possa executar automaticamente.
-
Executar um adaptador de sincronização
-
Saiba como acionar e programar transferências de dados usando o framework do adaptador de sincronização.
O conteúdo e os exemplos de código nesta página estão sujeitos às licenças descritas na Licença de conteúdo. Java e OpenJDK são marcas registradas da Oracle e/ou suas afiliadas.
Última atualização 2025-07-27 UTC.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Não contém as informações de que eu preciso","missingTheInformationINeed","thumb-down"],["Muito complicado / etapas demais","tooComplicatedTooManySteps","thumb-down"],["Desatualizado","outOfDate","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Problema com as amostras / o código","samplesCodeIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 2025-07-27 UTC."],[],[],null,["# Transfer data using sync adapters\n\n**Note:** We recommended [WorkManager](/topic/libraries/architecture/workmanager)\nas the recommended solution for most background processing use cases. Please reference the\n[background processing guide](/guide/background) to learn which solution works best for you.\n\n\nSynchronizing data between an Android device and web servers can make your application\nsignificantly more useful and compelling for your users. For example, transferring data to a web\nserver makes a useful backup, and transferring data from a server makes it available to the user\neven when the device is offline. In some cases, users may find it easier to enter and edit their\ndata in a web interface and then have that data available on their device, or they may want to\ncollect data over time and then upload it to a central storage area.\n\n\nAlthough you can design your own system for doing data transfers in your app, you should\nconsider using Android's sync adapter framework. This framework helps manage and automate data\ntransfers, and coordinates synchronization operations across different apps. When you use\nthis framework, you can take advantage of several features that aren't available to data\ntransfer schemes you design yourself:\n\n\nPlug-in architecture\n:\n Allows you to add data transfer code to the system in the form of callable components.\n\n\nAutomated execution\n:\n Allows you to automate data transfer based on a variety of criteria, including data changes,\n elapsed time, or time of day. In addition, the system adds transfers that are unable to\n run to a queue, and runs them when possible.\n\n\nAutomated network checking\n:\n The system only runs your data transfer when the device has network connectivity.\n\n\nImproved battery performance\n:\n Allows you to centralize all of your app's data transfer tasks in one place, so that they\n all run at the same time. Your data transfer is also scheduled in conjunction with data\n transfers from other apps. These factors reduce the number of times the system has to\n switch on the network, which reduces battery usage.\n\n\nAccount management and authentication\n:\n If your app requires user credentials or server login, you can optionally\n integrate account management and authentication into your data transfer.\n\n\nThis class shows you how to create a sync adapter and the bound [Service](/reference/android/app/Service) that\nwraps it, how to provide the other components that help you plug the sync adapter into the\nframework, and how to run the sync adapter to run in various ways.\n\n\n**Note:** Sync adapters run asynchronously, so you should use them with the\nexpectation that they transfer data regularly and efficiently, but not instantaneously. If\nyou need to do real-time data transfer, you should do it in an [AsyncTask](/reference/android/os/AsyncTask) or\nan [IntentService](/reference/android/app/IntentService).\n\nLessons\n-------\n\n\n**[Create a stub authenticator](/training/sync-adapters/creating-authenticator)**\n:\n Learn how to add an account-handling component that the sync adapter framework expects to be\n part of your app. This lesson shows you how to create a stub authentication component for\n simplicity.\n\n\n**[Create a stub content provider](/training/sync-adapters/creating-stub-provider)**\n:\n Learn how to add a content provider component that the sync adapter framework expects to be\n part of your app. This lesson assumes that your app doesn't use a content provider, so it\n shows you how to add a stub component. If you have a content provider already in your app,\n you can skip this lesson.\n\n\n**[Create a sync adapter](/training/sync-adapters/creating-sync-adapter)**\n:\n Learn how to encapsulate your data transfer code in a component that the sync\n adapter framework can run automatically.\n\n\n**[Run a sync adapter](/training/sync-adapters/running-sync-adapter)**\n:\n Learn how to trigger and schedule data transfers using the sync adapter framework."]]