Trasferisci i dati utilizzando gli adattatori di sincronizzazione
Mantieni tutto organizzato con le raccolte
Salva e classifica i contenuti in base alle tue preferenze.
Nota: consigliamo di utilizzare WorkManager come soluzione consigliata per la maggior parte dei casi d'uso di elaborazione in background. Fai riferimento alla guida all'elaborazione in background per scoprire la soluzione più adatta alle tue esigenze.
La sincronizzazione dei dati tra un dispositivo Android e i server web può rendere la tua applicazione molto più utile e accattivante per gli utenti. Ad esempio, il trasferimento dei dati su un server web esegue un backup utile, mentre il trasferimento dei dati da un server li rende disponibili per l'utente anche quando il dispositivo è offline. In alcuni casi, gli utenti potrebbero trovare più semplice inserire e modificare i propri dati in un'interfaccia web e quindi averli a disposizione sul proprio dispositivo oppure potrebbero voler raccogliere i dati nel tempo e caricarli in un'area di archiviazione centrale.
Anche se puoi progettare un sistema personalizzato per i trasferimenti di dati nella tua app, dovresti considerare l'utilizzo del framework dell'adattatore di sincronizzazione di Android. Questo framework aiuta a gestire e automatizzare i trasferimenti di dati e a coordinare le operazioni di sincronizzazione tra diverse app. Quando utilizzi questo framework, puoi sfruttare diverse funzionalità non disponibili per gli schemi di trasferimento di dati che progetti autonomamente:
-
Architettura dei plug-in
-
Consente di aggiungere il codice Data Transfer al sistema sotto forma di componenti richiamabili.
-
Esecuzione automatica
-
Consente di automatizzare il trasferimento dei dati in base a una serie di criteri, tra cui le modifiche ai dati,
il tempo trascorso o l'ora del giorno. Inoltre, il sistema aggiunge a una coda trasferimenti che non possono essere eseguiti e li esegue quando possibile.
-
Controllo automatico della rete
-
Il sistema esegue il trasferimento di dati solo quando il dispositivo è connesso di rete.
-
Prestazioni della batteria migliorate
-
Consente di centralizzare tutte le attività di trasferimento di dati dell'app in un unico posto, in modo che vengano
eseguite tutte contemporaneamente. Il trasferimento di dati è pianificato anche in concomitanza con i trasferimenti di dati da altre app. Questi fattori riducono il numero di volte in cui il sistema deve
accendere la rete, riducendo di conseguenza l'utilizzo della batteria.
-
Gestione e autenticazione dell'account
-
Se la tua app richiede credenziali utente o accesso al server, puoi facoltativamente integrare la gestione e l'autenticazione dell'account nel trasferimento di dati.
Questa classe mostra come creare un adattatore di sincronizzazione e il Service
associato che lo aggrega, come fornire gli altri componenti che ti aiutano a collegare l'adattatore di sincronizzazione al framework e come eseguire l'adattatore di sincronizzazione in modo che venga eseguito in vari modi.
Nota:gli adattatori di sincronizzazione vengono eseguiti in modo asincrono, pertanto ti consigliamo di utilizzarli
con l'aspettativa di trasferire i dati in modo regolare ed efficiente, ma non in modo istantaneo. Se
devi eseguire un trasferimento di dati in tempo reale, devi farlo in un AsyncTask
o
un IntentService
.
Lezioni
-
Creare un autenticatore stub
-
Scopri come aggiungere un componente per la gestione degli account che il framework dell'adattatore di sincronizzazione prevede che faccia parte della tua app. Questa lezione spiega come creare un componente di autenticazione stub per semplicità.
-
Creare un fornitore di contenuti stub
-
Scopri come aggiungere un componente del fornitore di contenuti che il framework dell'adattatore di sincronizzazione prevede che faccia parte della tua app. Questa lezione presuppone che la tua app non utilizzi un fornitore di contenuti, quindi ti mostra come aggiungere un componente stub. Se hai già un fornitore di contenuti nell'app, puoi saltare questa lezione.
-
Crea un adattatore di sincronizzazione
-
Scopri come incapsulare il codice Data Transfer in un componente che può essere eseguito automaticamente dal framework dell'adattatore di sincronizzazione.
-
Utilizza un adattatore di sincronizzazione
-
Scopri come attivare e pianificare i trasferimenti di dati utilizzando il framework dell'adattatore di sincronizzazione.
I campioni di contenuti e codice in questa pagina sono soggetti alle licenze descritte nella Licenza per i contenuti. Java e OpenJDK sono marchi o marchi registrati di Oracle e/o delle sue società consociate.
Ultimo aggiornamento 2025-07-27 UTC.
[null,null,["Ultimo aggiornamento 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."]]