2012年10月15日月曜日

androidでマルチスレッド(バックグランド処理) その2

androidでマルチスレッド(バックグランド処理) その2では、前回の2番のAsyncTaskクラスを使った方法を説明します。

スレッドの代わりにAsyncTaskクラスのサブクラスを作成し、onPreExecute()、doInBackground()、onPostExecute()をオーバーライドして、処理を記述します。

�onPreExecute : 前処理
�doInBackground : バックグラウンドで動かす処理
�onPostExecute : 終了時の処理

AsyncTaskのサブクラス化する際にAsyncTask‹Param, Progress, Result›という形で、doInBackground()の引数、進捗具合を表すパラメータ、doInBackground()の戻り値(=onPostExecuteの引数)をテンプレート引数に渡すようになっています。

完全なコードです。

1 package com.team_hiroq.sample;
2  
3 import android.app.Activity;
4 import android.os.AsyncTask;
5 import android.os.Bundle;
6 import android.view.View;
7 import android.view.View.OnClickListener;
8 import android.widget.TextView;
9  
10 public class ThreadSample2 extends Activity implements OnClickListener{
11     TextView mTextView;
12  
13     @Override
14     public void onCreate(Bundle savedInstanceState) {
15         super.onCreate(savedInstanceState);
16         setContentView(R.layout.theadsample1);
17  
18         //TextView取得
19         mTextView = (TextView)findViewById(R.id.ThreadSample1);
20         //TextViewタップ時にonClick実行
21         findViewById(R.id.ThreadSample1).setOnClickListener(this);
22     }
23  
24     @Override
25     public void onClick(View arg0) {
26         // スレッド起動
27         new AsyncAppTask().execute();
28     }
29  
30     class AsyncAppTask extends AsyncTask<Void, Void, String>{
31         @Override
32         protected void onPreExecute() {
33             // ここに前処理を記述します
34             // 例) プログレスダイアログ表示
35         }
36         @Override
37         protected String doInBackground(Void... arg0) {
38             // バックグランド処理をここに記述します
39             return "Thread Samples";
40         }
41         @Override
42         protected void onPostExecute(String result) {
43             // バックグランド処理終了後の処理をここに記述します
44             // 例) プログレスダイアログ終了
45             //    UIコンポーネントへの処理
46             mTextView.setText(result);
47         }
48     }
49 }

以上です。

0 件のコメント:

コメントを投稿