2017年2月6日月曜日

非同期処理のCursorLoaderについて

こんばんは。

アプリ開発が大詰めだった為、ブログ更新を怠っていました。
Adsenseの審査が通ったからって、更新止まったらだめですね・・・。

以前、非同期処理の記事を書いていましたが、今日は、CursorLoaderについてです。

CursorLoaderは、文字通りCursorをLoadします。
AsyncTaskLoader<Cursor>をextendsしているので、以前書いたAsyncTaskLoaderと実装方法はあまり変わりません。Cursorを扱う場合は、CursorLoaderを使用した方がいいと思います。


onCreateLoaderとonLoadFinished、onLoaderResetをOverrideします。
あとは、Loaderを実行します。
destoryも忘れずに。

ちょっとはまったのが、Activityで、getLoaderManager()がコンパイルエラーとなったことです。 サポートライブラリのandroid.support.v7.app.AppCompatActivityを使用する場合は、全てサポートライブラリで統一して、Activityでは、getSupportLoaderManager()を使用するようにしました。
CursorLoaderを使用していると、ContentProviderのinsertなどで、以下のようにしておけば、変更があったときに、onLoadFinishedが自動で呼ばれます。
ただし、onLoadFinishedで、Cursorをcloseしてしまうと、変更があっても、onLoadFinishedは呼ばれなくなります。

0 件のコメント:

コメントを投稿