[Tips] 非同期で処理する(AsyncTask)

Androidで非同期処理を行う方法はいくつかあるのですが、UI操作が絡んだ場合はAsyncTaskを使用します。

・クラス定義

AsyncTaskを継承する際に指定するクラスはそれぞれ<doInBackgroundの引数型, onProgressUpdateの引数型, onPostExecuteの引数型>です。
doInBackgroundなどのメソッドの引数型についても合わせて変更します。

・onPreExecute

プログレスダイアログの初期化などの非同期処理実行前の前処理を行います。
UIスレッドで動作するため、UIに関すること以外の初期化処理は基本的には行いません。

・doInBackground

重たいファイル処理や通信処理など画面処理とは関係がない重たい処理を行います。
UIスレッドではないためウィジェットやダイアログ操作を行うとエラーになります。もし処理途中で画面処理を行いたい場合はpublishProgressを呼び出すことでonProgressUpdateに処理を行わせることができます。
また、引数には呼び出し元のexecuteで実行した際に渡された値が入ってきます。

・onProgressUpdate

プログレスダイアログの更新などの進捗状況表示処理を行います。
UIスレッドで動作します。

・onPostExecute

非同期処理が成功・失敗の結果の表示などの後処理を行います。
UIスレッドで動作します。

コメントを残す

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