AsyncTaskの備忘録
- 2020.03.24
- Android

使う機会が多いもののその都度調べてる気がするので使い方を簡素にまとめておきます。
AsyncTask
⇒面倒くさい部分を除いて別スレッドで非同期処理をやってくれます。
以下用意されている基本的なメソッド
onPreExecute
⇒doInBackgroundの前に実行される(メインスレッド)
ダイアログの生成に利用したがそれ以外ではあんまり使ってない。
doInBackground
⇒バックグラウンドでの処理を書く。
必ず実装する。
onProgressUpdate
⇒名前の通り引数を基にプログレスダイアログを表示する際に利用する。
ここもメインスレッド。
onPostExecute
⇒メインスレッドで実装。
doInBackgroundの返り値を引数として受け取る。
雛形
AsyncTask:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
class TestAsyncTask internal constructor() : AsyncTask<ByteArrayOutputStream, Void, List<String>>() { override fun onPreExecute() { super.onPreExecute() } override fun doInBackground(baos: Array<ByteArrayOutputStream>): List<String> { var response: MutableList<String> = ArrayList() try { response = "サーバーから取得したデータ等" as MutableList<String> } catch (e: IOException) { response.add(e.toString()) } return response } override fun onPostExecute(result: List<String>) { //doInBackgroundで返したresponseをここで処理 for (s in result) { Log.i("Response", s) } } } |
呼び出し側:
1 2 |
val task = TestAsyncTask() task.execute(送信データ) |
補足:
TestAsyncTaskに3つの引数を持たせているがそれぞれ、doInBackgroundの引数、onProgressUpdateの引数
、onPostExecuteの返り値の型となっている。onProgressUpdateは今回利用していないので第2引数はVoidにしている。
-
前の記事
SSH接続でリモートとローカルでファイルのやり取りを行う 2020.03.24
-
次の記事
ギャラリーから画像/動画を取得する 2020.03.24