2014年8月26日火曜日

【Android】AsyncTaskLoader と AsyncTask

WebAPIからデータを取得する処理。

通信はメインスレッドでやってはいけないので 、非同期処理を作ることになる。

AsyncTaskLoaderを使うのが推奨されているらしいので、それを使って実装していた。
AsyncTaskLoaderを継承したクラスを動作させるためにはLoaderManagerクラスのインスタンスを経由しないといけない。
LoaderManagerクラスのインスタンスを取得するには、Activityを主語にして getLoaderManager() を実行しないといけない。
→アクティビティが使える場所じゃないといけない。


今回、サービスから処理がスタートして、アプリ本体が画面に表示されていなくてもAPIに接続してデータを取得しそれをプリファレンスに書き込むという処理を作ることになった。
サービスからスタートしているし、画面にアプリ本体が表示されていなくても実行できないといけないので、アクティビティが使えない=AsyncTaskLoaderが使えない。

そこで、APIに接続する処理を AsyncTaskクラスを継承したクラスで行うようにした。
これならアクティビティを必要としない。

本番のAPIではなく、仮のURLに接続してテストしたところ、値が取得できたので動きそう。

0 件のコメント:

コメントを投稿