| page.title=Transferring Data Using Sync Adapters |
| |
| trainingnavtop=true |
| startpage=true |
| |
| |
| @jd:body |
| |
| <div id="tb-wrapper"> |
| <div id="tb"> |
| |
| <h2>Dependencies and prerequisites</h2> |
| <ul> |
| <li>Android 3.0 (API Level 11) or higher</li> |
| </ul> |
| |
| <h2>You should also read</h2> |
| <ul> |
| <li> |
| <a href="{@docRoot}guide/components/bound-services.html">Bound Services</a> |
| </li> |
| <li> |
| <a href="{@docRoot}guide/topics/providers/content-providers.html">Content Providers</a> |
| </li> |
| <li> |
| <a href="{@docRoot}training/id-auth/custom_auth.html">Creating a Custom Account Type</a> |
| </li> |
| </ul> |
| |
| <h2>Try it out</h2> |
| |
| <div class="download-box"> |
| <a href="http://developer.android.com/shareables/training/BasicSyncAdapter.zip" class="button">Download the sample</a> |
| <p class="filename">BasicSyncAdapter.zip</p> |
| </div> |
| |
| </div> |
| </div> |
| <p> |
| Synchronizing data between an Android device and web servers can make your application |
| significantly more useful and compelling for your users. For example, transferring data to a web |
| server makes a useful backup, and transferring data from a server makes it available to the user |
| even when the device is offline. In some cases, users may find it easier to enter and edit their |
| data in a web interface and then have that data available on their device, or they may want to |
| collect data over time and then upload it to a central storage area. |
| </p> |
| <p> |
| Although you can design your own system for doing data transfers in your app, you should |
| consider using Android's sync adapter framework. This framework helps manage and automate data |
| transfers, and coordinates synchronization operations across different apps. When you use |
| this framework, you can take advantage of several features that aren't available to data |
| transfer schemes you design yourself: |
| </p> |
| <dl> |
| <dt> |
| Plug-in architecture |
| </dt> |
| <dd> |
| Allows you to add data transfer code to the system in the form of callable components. |
| </dd> |
| <dt> |
| Automated execution |
| </dt> |
| <dd> |
| Allows you to automate data transfer based on a variety of criteria, including data changes, |
| elapsed time, or time of day. In addition, the system adds transfers that are unable to |
| run to a queue, and runs them when possible. |
| </dd> |
| <dt> |
| Automated network checking |
| </dt> |
| <dd> |
| The system only runs your data transfer when the device has network connectivity. |
| </dd> |
| <dt> |
| Improved battery performance |
| </dt> |
| <dd> |
| Allows you to centralize all of your app's data transfer tasks in one place, so that they |
| all run at the same time. Your data transfer is also scheduled in conjunction with data |
| transfers from other apps. These factors reduce the number of times the system has to |
| switch on the network, which reduces battery usage. |
| </dd> |
| <dt> |
| Account management and authentication |
| </dt> |
| <dd> |
| If your app requires user credentials or server login, you can optionally |
| integrate account management and authentication into your data transfer. |
| </dd> |
| </dl> |
| <p> |
| This class shows you how to create a sync adapter and the bound {@link android.app.Service} that |
| wraps it, how to provide the other components that help you plug the sync adapter into the |
| framework, and how to run the sync adapter to run in various ways. |
| </p> |
| <p class="note"> |
| <strong>Note:</strong> Sync adapters run asynchronously, so you should use them with the |
| expectation that they transfer data regularly and efficiently, but not instantaneously. If |
| you need to do real-time data transfer, you should do it in an {@link android.os.AsyncTask} or |
| an {@link android.app.IntentService}. |
| </p> |
| <h2>Lessons</h2> |
| <dl> |
| <dt> |
| <b><a href="creating-authenticator.html">Creating a Stub Authenticator</a></b> |
| </dt> |
| <dd> |
| Learn how to add an account-handling component that the sync adapter framework expects to be |
| part of your app. This lesson shows you how to create a stub authentication component for |
| simplicity. |
| </dd> |
| <dt> |
| <b><a href="creating-stub-provider.html">Creating a Stub Content Provider</a></b> |
| </dt> |
| <dd> |
| Learn how to add a content provider component that the sync adapter framework expects to be |
| part of your app. This lesson assumes that your app doesn't use a content provider, so it |
| shows you how to add a stub component. If you have a content provider already in your app, |
| you can skip this lesson. |
| </dd> |
| <dt> |
| <b><a href="creating-sync-adapter.html">Creating a Sync Adapter</a></b> |
| </dt> |
| <dd> |
| Learn how to encapsulate your data transfer code in a component that the sync |
| adapter framework can run automatically. |
| </dd> |
| <dt> |
| <b><a href="running-sync-adapter.html">Running a Sync Adapter</a></b> |
| </dt> |
| <dd> |
| Learn how to trigger and schedule data transfers using the sync adapter framework. |
| </dd> |
| </dl> |