以下Timerのサンプルプログラムで説明をしていきます。スタートボタンを押すと、カウントが始まり、ストップボタンを押すとカウントが止まります。
public class TimerExample extends Activity implements OnClickListener{ TextView timeTextView; Button btnStart; Button btnStop; private Handler mHandler; private Timer mTimer; private int count = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.timer_example); //Setting TextView timeTextView = (TextView) findViewById(R.id.time); //Setting Button btnStart = (Button) findViewById(R.id.btnstart); btnStart.setOnClickListener(this); btnStop = (Button) findViewById(R.id.btnstop); btnStop.setOnClickListener(this); } @Override public void onClick(View v) { if(v == btnStart){ if(mTimer != null) return; count = 0; mTimer = new Timer(); mHandler = new Handler(); mTimer.schedule(new TimerTask() { public void run() { mHandler.post(new Runnable() { public void run() { ++count; timeTextView.setText(String.valueOf(count)); } }); } },0, 1000); } if(v == btnStop){ if(mTimer == null) return; mTimer.cancel(); mTimer = null; } } }
Timer
Timerのメソッドでは、遅延や何秒間隔で繰り返すかなどを設定することができます。
1. Timerのインスタンス
まず最初にTimerのインスタンスを生成します。
mTimer = new Timer();
2. Timerのスケジュール設定
TimerTask()のインスタンスを生成し、遅延や何秒間隔で繰り返すか設定します。
mTimer.schedule(new TimerTask() { ... },0, 1000);
3. Timerのキャンセル
Timerとスケジュールされているタスクのキャンセル。現在実行中のタスクはキャンセルされません。
mTimer.cancel();
TimerTask
決められた時間間隔でタスクを実行します。
new TimerTask() { public void run() { ... } }
Handler
Handlerによって、別スレッドからメインスレッドに通信をすることができます。ここではTimerが別スレッドになります。Timerからシグナルが来た時に、Runnable内のコードがメインスレッドとして実行されます。
0 件のコメント:
コメントを投稿