CursorLoader
アプリでを使用することには、2つの主な利点があります。Activity.managedQuery():
- クエリはバックグラウンドスレッドで処理されます(
AsyncTaskLoader)
非常に大きなデータクエリに基づいて構築されているため、UIがブロックされません。これは、プレーンを使用するときにドキュメントで推奨されていることですCursor
が、現在は内部で実行されています。
CursorLoader
自動更新です。最初のクエリの実行に加えて、CursorLoaderは、要求したデータセットにを登録し、データセットが変更されたときにそれ自体ContentObserver
を呼び出します。forceLoad()
これによりasync
、ビューを更新するためにデータが変更されるたびにコールバックを受け取ることになります。
各ローダーインスタンスも単一のインスタンスを介して処理LoaderManager
されるため、カーソルを直接管理する必要はありません。接続は1つActivity. LoaderManager.initLoader()
を超えても維持できLoaderManager.restartLoader()
、クエリ用にすでに設定されている既存のローダーに再接続できます。場合によっては、最新のデータが利用可能であれば、すぐに取得できます。
アクティビティまたはフラグメントは、LoaderManager
.Callbackインターフェイスを実装する可能性があります。呼び出すinitLoader()
と、onCreateLoader()メソッドが生成され、CursorLoader
必要に応じてクエリと新しいインスタンスを作成します。このonLoadFinished()
メソッドは、新しいデータが利用可能になるたびに起動され、ビューにアタッチしたり、繰り返し処理したりするための最新のカーソルが含まれます。
さらに、LoaderManager
クラスのドキュメントページには、このすべての適合のかなり良い例があります:http: //developer.android.com/reference/android/app/LoaderManager.html
お役に立てば幸いです。