Androidでの非同期処理の必要性と実装方法

通信を必要とするアプリでは、後述の理由により非同期処理が必要になることがあり、AsyncTask クラスを用いて実装します。

スポンサーリンク

非同期処理はなぜ必要なのか

アプリ内で通信を実行したとき、通信結果によって表示内容が変わる場合を考えてみます。

通信結果を表示内容に反映させるということは、同一スレッドで処理を実行している場合、通信が終了するのを待ってから画面の更新を行うことになります。

このとき、通信が終了するまで以降の処理をすべて待機させることになるので、非常に効率が悪い上にユーザーエクスペリエンスも低下するだろう、という話です。

実装

内部クラスを作る

UI を更新するクラス内で AsyncTask クラスを継承したクラスを作ります。

変数の型

  • Params: 入力する引数の型 (配列)
  • Progress: 更新中に記録してる変数の型?(onProgressUpdate() で使うっぽい)
  • Result: 返す変数の型

使わないところは Void で指定します。

メソッド

クラスには必ず doInBackground() メソッドが必要で、このメソッド内にバックグラウンドでの処理を書きます。

必須ではないですが、非同期処理の前後やその最中に実行するメソッド onPreExecute(), onProgressUpdate(), onPostExecute() も用意されています。

メインスレッド内の実装

インスタンスを作成して実行します。

サブクラスで return されると、メインスレッドに戻って画面を更新します。

スポンサーリンク

コメント・質問する