Android開発爆笑記

レセプターのソフト&ハード開発備忘録

スレッド勉強中-2

マルチスレッドは2種類ある。

・Threadタイプ(Java標準)

・AsyncTaskタイプ(Androidで提供)

 

Threadタイプの記述例

・HandlerクラスのインスタンスをしてHandler.postでRunnable()のrun()の中で画面関連の処理を記述する。

package com.ドメイン.sample;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;
 
public class ThreadSample extends Activity implements OnClickListener{
    Handler  mHandler   = new Handler();        //Handlerのインスタンス生成
    TextView mTextView;
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.theadsample1);
         
        //TextView取得してmTextViewに格納する 
        mTextView = (TextView)findViewById(R.id.ThreadSample1);
        //TextViewタップ時にonClick実行
        findViewById(R.id.ThreadSample1).setOnClickListener(this);
    }
 
    @Override
    public void onClick(View arg0) {
        // スレッド起動
        (new Thread(new Runnable() {
            @Override
            public void run() {
                // 通常バックグランドをここに記述します
                .....
                 
                /**
                 * Handlerのpostメソッドを使ってUIスレッドに処理をdispatchします
                */
                mHandler.post(new Runnable() {
                    @Override
                    public void run() {
                        //取得したイメージをImageViewに設定
                        mTextView.setText("Thread Samples");
                    }
                });
            }
        })).start();
    }
}

サンプル参照< androidでマルチスレッド(バックグランド処理) その1 – Android | team-hiroq >