asynctask

メインスレッドで重たい処理を行ってしまうと、
その処理が終わるまではユーザの操作を受け付けなくなってしまいます。
ユーザはアプリがハングしてしまったのではないか?と思ったり、
反応が遅くて不快に思ったりします。
それを防ぐためにAsynctaskを利用します。


AsyncTaskの主な4つの工程の内容
1 onPreExecute() 事前準備の処理を記述する(省略可能)
2 doInBackground(Params...) バックグラウンドで行う処理を記述する
3 onProgressUpdate(Progress...)進捗状況をUIスレッドで表示する処理を記述する(省略可能)
4 onPostExecute(Result) バックグラウンド処理が完了し、UIスレッドに反映する処理を記述する


アクティビティなどからの実行方法

尚、各処理ごとにインスタンスを作成する必要があります
(例)100回通信処理を非同期処理でする場合、以下を100回実行する。

DownloadTask task = new DownloadTask(引数);
task.execute(引数);


以下サンプル

/*
このジェネリクスに指定してあるものが、
それぞれここで書いているString,Void,Bitmapの3つの型は
順にParams、Progress、Resultとして扱われ、
それぞれバックグラウンド処理を開始する
インスタンスメソッドexecuteの引数の型、
進捗度合を表示する時に利用したい型、
バックグラウンド処理完了時に受け取る型を意味しています。
※型を指定したくない場合はVoidを使います。