もう非同期処理では、あたりまえなのだろうが、まとめておかないとすぐに忘れる。
AsyncTaskLoader | Android Developers
目次
1. Thread と AsyncTask
2. AsyncTaskLoader の利点
3. LoaderManager の利用
4. よくある間違いと回避法
5. 基本的な Loader の実装
6. いろいろな Loader の使用例
7. データベースと CursorLoader
8. Loader の弱点を克服する
1. Thread と AsyncTask
まずは、非同期処理ではおなじみのThread。
めんどくさいことがいくつかある。
- メインスレッドに結果を戻す必要がある。
- 手動でキャンセルしなければならない。
- スレッドをプールしたければ独自実装しなければならない。
でそこらに対応した AsyncTask。以下の特徴をもつ。
- 結果をメインスレッドに送ってくれる。
- スケジュールは管理されている。
- キャンセル処理も可能。
- 進行状況が取得できる。
これの問題点。
アクティビティがdestroyedしたときでもキャンセルできるようにそれぞれのAsyncTaskの参照を保持しておく必要がある。
メモリーリーク: エンクロージングActivityがdestoryされても、AsyncTaskが実行されている間は、そのActivityに参照を保持している。
結果が返却されたあと、Activityが再作成(orientation change)されるとその結果が失われる。
AsyncTaskのスケジューリングは Androidのバージョンによって異なる。
そして、今どきは AsyncTaskLoader。
(→ 「2.AsyncTaskLoader の利点」につづく )
関連ワード: Android・今さら聞けない・開発・AsyncTask・AsyncTaskLoader・Thread・非同期