Android Loaders

6367 ワード

3.0からAndroidはloadersをサポートし、loadersはデータの非同期ロードとデータソースの変化を監視する能力を提供します.
loaders #の使用
初期化Loader #
getLoaderManager().initLoader(  /*loader id*/0, 
                               
/* loader */null,
                               
/*LoaderManager.LoaderCallbacks*/this);

コールバックオブジェクトを実装する必要があります.
onCreateLoader()メソッド.ここでは新しいloaderを作成する必要があります.
onLoadFinished()メソッド、onLoadReset()メソッド、
このloaderのidがすでに他のloaderで使用されている場合、前のloaderは再利用されます.
このloaderのidが新しい場合、コールバックオブジェクトのonCreateLoader()が呼び出されます.
LoaderManagerはloaderのライフサイクルを管理するので、loaderを作成したらを管理する必要はありません.
Loader #を再起動
既存のloaderのデータを破棄する必要がある場合は、loaderを再起動できます.
   getLoaderManager().restartLoader(0, null, this);

Loader #の作成
通常、onCreateLoader()メソッドでLoaderを作成します.一般的なAndroidで作成されるのはCursorLoaderのみで、CursorLoaderはContentProviderから返されたcursorを問い合わせることでデータソースを提供します.
応答onLoadFinishedおよびonLoadResetメソッド#
onLoadFinishedはloaderがデータをロードした後に呼び出され、この方法はloaderが最後にロードしたデータが解放される前に呼び出されることを保証する(This method is guaranteed to be called prior to the release of the last data that was supplied for this loader)onLoadResetこのメソッドの呼び出しは、loaderが再初期化する前にloadのデータがを使用していなかったことを示しています.
 
カスタムLoader #
AndroidはCursorLoaderの具体的なLoaderを提供しているだけで、AsyncTaskLoaderまたはLoaderを継承してカスタムLoaderを実現することもできます.AsyncTaskLoaderは、他のスレッドにデータをロードする機能を提供しており、拡張性が優れています.参照AsyncTaskLoader
 
参照#
Loaders guider
Loader