Androidプログラマへの道 〜 Moonlight 明日香 〜 - スレッドを生成する
時間のかかる処理をメインスレッドで実行すると, その処理が完了するまでUIの操作などができなくなる.
このような場合には, 時間のかかる処理を別スレッドで動作させるのが望ましい.
スレッドを生成するには, スレッド(Thread)を使う.

スレッドを生成する

    • Threadクラスのインスタンスに, スレッドで処理するコードを記述したRunnableクラスを指定する.
    • Thread.startメソッドで, スレッドを起動する.
package com.moonlight_aska.android.thread01;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;

public class Thread01 extends Activity {
  private Button btn;
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    btn = (Button)findViewById(R.id.button_id);
    btn.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        // TODO Auto-generated method stub
        new Thread(new Runnable() {
          @Override
          public void run() {
            // TODO Auto-generated method stub
            loadFile(); // 時間のかかる処理
          }
        }).start();
      }
    });
  }

  private void loadFile() {
    // ファイル読み込み処理の代わりに, sleepを実行
    try {
      Thread.sleep(10000);
    } catch (InterruptedException ie) {
      Log.v("loadFile", "error");
    }
  }
}