Timerアプリ
Timerはscheduleメソッドで動く。
Timer.schedule(繰り返し実行したいクラスを実体化,その実体が初めて実行されるまでの時間,繰り返し間隔時間)となっている。
1.クラスの最初で変数宣言をする
private Timer mTimer;
private MainTimerTask mTimerTask;
private Handler mHandler = new Handler();
private TextView mText; //※4画面用の変数
2.onCreateの中でインスタンス(実体)を作る。※3
mTimer = new Timer();
mTimerTask = new MainTimerTask();
3.繰り返し実行したいクラスを作成する。
public class MainTimerTask extends TimerTask { // 下線部分がクラス名
@Override
public void run() {
// ここに繰り返し間隔で行いたい処理を記述する。※1 ※2
}
}
4.scheduleに設定する。※3開始と同時に始めたいときはonCreateの中で記述する。
mTimer.schedule( mTimerTask, 0, 1000); // すぐ実行の1秒間隔で処理を繰り返す
5.タイマー終了は※2内で記述されることが多い。cancelしたらTimerもタスク(繰り返し実行したいクラスの実体)を破棄するので、再開する際はそれぞれ実体を再度作ることが必要です。
mTimer.cancel();
※1.画面に何か表示するには
mHandler.post( new Runnable() {
public void run() {
// ここで画面用の変数※4に値を代入する
}
});
以下サンプルコード
package com.receptorinc.android.test;
// タイマーアプリのテストプログラム
import java.util.Timer;
import java.util.TimerTask;
import android.os.Bundle;
import android.os.Handler;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.TextView;
public class MainActivity extends Activity {
private Timer mTimer;
private MainTimerTask mTimerTask;
private Handler mHandler = new Handler();
private TextView mText;
private Boolean isRun = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mText = (TextView)findViewById(R.id.txtTime);
}
public class MainTimerTask extends TimerTask {
@Override
public void run() {
mHandler.post(new Runnable() {
public void run() {
mText.setText(mText.getText()+".");//
}
});
}
}
public void startTimer(View v) {
if (isRun) { // 終了
isRun = false;
mTimer.cancel();
} else { // 開始
isRun = true;
mTimer = new Timer();
mTimerTask = new MainTimerTask();
mTimer.schedule(mTimerTask, 0, 1000);
}
}
}