AsyncTaskLoader の使い方 (1/8) 〜 Thread と AsyncTask

もう非同期処理では、あたりまえなのだろうが、まとめておかないとすぐに忘れる。

AsyncTaskLoader___Android_Developers

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今さら聞けない開発