AndroidアプリからWebAPIへアクセス

AndroidアプリからWebAPIへアクセス

AndroidアプリからWebAPIを呼び出す場合
HTTP通信をするため
メインスレッドとは別のスレッドで
非同期処理する

Androidアプリで、スレッドを作成して
非同期処理させるには
いくつかのアプローチがある

Android 3.0までは
Android SDKで提供されるAsyncTaskクラスを直接利用するのが一般的だった

AsyncTaskクラスでは
メインUIスレッドとは別の非同期処理と
UIスレッドへの実行結果を通知する仕組みが用意されている

これにより、
別スレッドからのUI操作の問題も回避でき
非同期処理が実装できる

ただ、Android 3.0から非同期処理をより
汎用的に扱うためloaderという仕組みができた

loaderクラスは
非同期にデータを読み込むための抽象的クラスで
Activity
Fragmentどちらでも利用できる

Android 3.0未満でも
Support Library という互換ライブラリーを使えば
loaderを使うことができる

AsyncTask と似たもので
AsyncTaskLoader

これは、Loaderのサブクラスで
従来のAsyncTaskクラスの機能が使える

AsyncTaskでは
非同期処理と
UIスレッドへのアクセスができるため
便利だけど
UIへの処理が分散する

AsyncTaskLoaderでは
この問題をActivityに対してコールバックするメソッド、
つまりインターフェースの実装をすることで
解決している

Activityクラスで
LoaderCallbacksインターフェースを実装すれば
非同期処理の各イベントに応じて決められたメソッドが、呼び出される

このメソッドの中で
非同期処理の進捗状況の表示や
処理完了時のViewの更新処理を記述するようにする

このように、ActivityLoaderクラスを使うことで
ActivityのUI制御と非同期処理の処理を分けて実装することができる

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です