page.title=Loading Data in the Background
page.tags=cursorloader

trainingnavtop=true
startpage=true

@jd:body
<div id="tb-wrapper">
<div id="tb">

<!-- Required platform, tools, add-ons, devices, knowledge, etc. -->
<h2>Dependencies and prerequisites</h2>
<ul>
    <li>
        Android 1.6 or later
    </li>
</ul>

<!-- related docs (NOT javadocs) -->
<h2>You should also read</h2>
<ul>
    <li>
        <a href="{@docRoot}guide/components/loaders.html">Loaders</a>
    </li>
    <li>
        <a href="{@docRoot}guide/topics/data/data-storage.html#db">Using Databases</a>
    </li>
    <li>
<a href="{@docRoot}guide/topics/providers/content-provider-basics.html">Content Provider Basics</a>
    </li>
</ul>

<h2>Try it out</h2>
<div class="download-box">
    <a href="{@docRoot}shareables/training/ThreadSample.zip" class="button">Download the sample</a>
    <p class="filename">ThreadSample.zip</p>
</div>

</div>
</div>
<p>
    Querying a {@link android.content.ContentProvider} for data you want to display takes time.
    If you run the query directly from an {@link android.app.Activity}, it may get blocked and
    cause the system to issue an "Application Not Responding" message. Even if it doesn't, users
    will see an annoying delay in the UI. To avoid these problems, you should initiate a query on a
    separate thread, wait for it to finish, and then display the results.
</p>
<p>
    You can do this in a straightforward way by using an object that runs a query asynchronously in
    the background and reconnects to your {@link android.app.Activity} when it's finished. This
    object is a {@link android.support.v4.content.CursorLoader}. Besides doing the initial
    background query, a {@link android.support.v4.content.CursorLoader} automatically re-runs the
    query when data associated with the query changes.
</p>
<p>
    This class describes how to use a {@link android.support.v4.content.CursorLoader} to run a
    background query. Examples in this class use the <a
    href="{@docRoot}tools/support-library/features.html#v4">v4 Support Library</a>
    versions of classes, which support platforms starting with Android 1.6.
</p>
<h2>Lessons</h2>
<dl>
    <dt>
        <strong><a href="setup-loader.html">Running a Query with a CursorLoader</a></strong>
    </dt>
    <dd>
        Learn how to run a query in the background, using a
        {@link android.support.v4.content.CursorLoader}.
    </dd>
    <dt>
        <strong>
        <a href="handle-results.html">Handling the Results</a>
        </strong>
    </dt>
    <dd>
        Learn how to handle the {@link android.database.Cursor} returned from the query, and how
        to remove references to the current {@link android.database.Cursor} when the loader
        framework re-sets the {@link android.support.v4.content.CursorLoader}.
    </dd>
</dl>
