LoaderCallbacksはクライアントがLoaderManagerと双方向にやり取りするためのコール
バックインターフェイスです。
例えば、onCreateLoader()コールバックメソッドはLoaderManagerからのLoader生成の要
求で、ここでLoaderをインスタンス化して新しいローダを返します。
このコールバックはActivity/FragmentがLoaderManager経由でLoaderを使用する場合に
必要です。各コールバックはメインスレッドで実行される必要があります。
●onCreateLoader(id, args)
- LoaderManagerから指定されたIDに紐付くLoaderインスタンスの生成要求です。
ここで、データのロード準備ができたLoaderインスタンスを返却します。
●onLoadFinished(loader, data)
- Loaderのデータロード完了通知です。
- このコールバックはActivity.onSaveInstanceState()より後に呼ばれる可能性があるこ
とに注意してください。
例えば、このメソッド内でFragmentTransactionのコミットを行うと例外が発生します。
※FragmentManager.openTransactionについて
http://developer.android.com/intl/ja/reference/android/app/FragmentManager.html - このコールバックはLoaderの持つデータが解放される前に呼び出されます。
この時点で使用している古いデータは削除すべきですが、Loaderがそのデータを管理
しているため、ここでデータを解放してはいけません(Cursorのclose等) - Loaderはアプリケーションがそのデータを使用しないと分かると自動で削除・解放して
くれます。CursorAdapterとLoaderを併用している場合、CursorAdapter.changeCursor(cursor)メソッドは既存のcorsorをクローズしようとするので注意が必要です。 - Adapterに紐付くカーソルの更新は、これをcloseしないswapCursor(Cursor)を使用する
必要があります。mAdapter.swapCursor(data)がその例です。 - ※swapCursorについて
http://developer.android.com/reference/android/widget/CursorAdapter.html#swapCursor(android.database.Cursor) - ※サンプルプログラム
http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderCursor.html
●onLoaderReset(loader)
- 作成したLoaderのリセット通知です。これによりロードしたデータが使用できなくなります。
アプリケーションはこのタイミングで必要なデータ参照の削除を行います。
mAdapter.swapCursor(null);がその例です。
以上です。