Any potentially long-running operations should not be done on the UI thread, as this can cause your application to be slow or become unresponsive. The Android OS will bring up the Application Not Responding (ANR) dialog when apps become unresponsive.
Since querying databases can be time-consuming, Android introduced the Loader API in Android 3.0. A Loader processes the query on a background thread and notifies the UI thread when it finishes.
The two primary benefits to Loaders are the following:
- Querying the database is (automatically) handled on a background thread
- The query auto-updates (when using a Content Provider data source)
To demonstrate a Loader, we will modify the previous SQLite database example to use a CursorLoader
to populate ListView
.