スポンサーサイト

--年--月--日 --:--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

非同期処理を行う ~part2 AsyncTaskの利用

2011年01月16日 13:27

前回はJavaと同じようなやり方で、スレッド処理をやった。
でも、Androidではメインスレッド以外で画面インターフェースを弄るような操作は出来ないし、画面インターフェースを操作するにはHandlerを利用するしかない。

Androidでは、このスレッド処理をうま~くやってくれるクラスがあるのでそちらを紹介。
たぶんこっちを使うほうがスタンダード?

1.AsyncTaskクラスを継承したクラスを作成する。
ここでGenericsというのを指定する。詳しくは、JavaのGenericsについて書いてる人がいると思うからそっち参照ってことで。
ざっと説明すると(後のSampleを見ればなんとなくイメージはつかめるかな?)
この部分は使わないから、型指定もしないって場合はVoidを指定すればいい。
・Params
スレッドが開始されたときに、渡す引数の型。(doInBackgroundメソッドの引数)
・Progress
進捗率を表示させるときに使う型。(onProgressUpdateメソッドの引数)
・Result
スレッド終了時に値を返す時の型。(onPostExecuteの引数・doInBackgroundの返り値)


2.メソッドを実装する。
↓メソッドを追加する(doInBackgroundが最低限実装されてればいい)
・doInBackground
バックグラウンドで実行させたい処理。
・onPreExecute
タスク開始直後に呼ばれる。
・onProgressUpdate
プログレスバーとかに進捗具合を更新したい場合はこの中に記述する。
・onPostExecute
スレッドが終了した後に呼ばれる。「完了!」とかTextViewなどに表示させたい場合はここに記述する。


3.タスクの作成・タスクの開始
そうしたらメインスレッドのほうで、作成したクラスのインスタンスを作り起動する。
4.Sample
ここまでだとよくわからないから、雛形のみのSanmpleで要素の確認をしてみる。
ちなみに、より詳しいことは
http://techbooster.jpn.org/application/1339/
http://labs.techfirm.co.jp/android/cho/1079
らへんを見てくれるとわかるかも。

とりあえず、AsyncTaskクラスだけの使い方で
他の余計な処理を極力省いてる感じで作ったが…

というか、よさそうなSampleがなかなか思い浮かばなかった。
他のごちゃごちゃした処理を省きたくても 作り出すとごちゃごちゃしちゃうんだよな~・・・orz
まぁ、大まかな流れがわかれば良いかなって感じで メモ的に書いといた


コメント

    コメントの投稿

    (コメント編集・削除に必要)
    (管理者にだけ表示を許可する)

    トラックバック

    この記事のトラックバックURL
    http://individualmemo.blog104.fc2.com/tb.php/52-d4b0fdb6
    この記事へのトラックバック



    上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。