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 2.1 (API Level 7) 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>
