タイマーを使う
java.util.Timer クラスを用いて、Android上でタイマーを使った処理を実現する。
また、より簡易にHandlerクラスを利用してもよい。
また、より簡易にHandlerクラスを利用してもよい。
Timerクラス
Android 上で Timerクラスを扱う場合、いくつかの注意点がある。
- cancel したTimerクラス、または TimerTaskクラスは再利用できない。
- new し再度オブジェクトを作る必要がある
- TimerTask.run から Viewを操作することはできない。
- Viewを操作できるのは、アプリのスレッドからのみ。TimerTask.run の処理は別スレッドで実行されるため例外が発生する。そのためHandler.postメソッドを使用する。
サンプルコード
- 3秒後から1秒ごとに特定の処理を実行する
- Handlerクラスは予めメンバとして用意。別スレッド内では newできない。
Handler handler = new Handler();
timer = new Timer(true); timer.scheduleAtFixedRate( new TimerTask() { public void run() { handler.post(new Runnable(){ public void run() { //do something } }); } }, 3000, 1000);
- タイマーの破棄
timer.cancel(); timer = null; //再利用されないようnullをセット
Handler の postDelay を使う
より簡単に一定時間経過後に処理を行いたい場合は、Handlerクラスを利用することも可能。
sleepは使用すると、一切の入力を受けつけなくなるため、使わないほうがいい。
sleepは使用すると、一切の入力を受けつけなくなるため、使わないほうがいい。
サンプルコード
((TextView)getViewById(R.id.TextView)).setText("start"); Handler handler = new Handler(); handler.postDelayed(new Runnable() { public void run() { ((TextView)getViewById(R.id.TextView)).setText("finished"); } }, 10000);