| 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> |