Timerを使ってみる(1)
時間経過や一定間隔での処理を行う場合にはタイマーがよく使われます。
今回 はタイマーの基本的な使い方をまとめてみました。
Javaのタイマーにはいくつか種類がありますが、今回はjava.util.Timerクラスを使ってみます。
このクラスのインスタンスを作成し、スケジュールを指定すると任意の処理を定期的に実行できるようになります。
まずはインスタンスを生成方法を見てみましょう。
Timer mainTimer = new Timer();
TimerTaskはabstractクラスなので必ず継承したクラスを用意することになります。
public class MainTimerTask extends TimerTask {
@Override
public void run() {
//ここに定周期で実行したい処理を記述します
}
}
mainTimer.Cancel();
//mainTimer.schedule(TimerTask task, long delay, long period)
mainTimer.schedule(new MainTimerTask(), Date time)
delay=初めのタスクが実行されるまでの時間 です。(単位ミリ秒)
period=タスクが実行される周期です。(単位ミリ秒)
定周期に数字をカウントして、そのカウント数を画面上に表示するサンプルを下記に記述します
package com.example.timertest;
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.widget.TextView;
public class MainActivity extends Activity {
private Timer mainTimer; //タイマー用
private MainTimerTask mainTimerTask; //タイマタスククラス
private TextView countText; //テキストビュー
private int count = 0; //カウント
private Handler mHandler = new Handler(); //UI Threadへのpost用ハンドラ
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//タイマーインスタンス生成
this.mainTimer = new Timer();
//タスククラスインスタンス生成
this.mainTimerTask = new MainTimerTask();
//タイマースケジュール設定&開始
this.mainTimer.schedule(mainTimerTask, 1000,500);
//テキストビュー
this.countText = (TextView)findViewById(R.id.count_text);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
/**
* タイマータスク派生クラス
* run()に定周期で処理したい内容を記述
*
*/
public class MainTimerTask extends TimerTask {
@Override
public void run() {
//ここに定周期で実行したい処理を記述します
mHandler.post( new Runnable() {
public void run() {
//実行間隔分を加算処理
count += 1;
//画面にカウントを表示
countText.setText(String.valueOf(count));
}
});
}
}
}
カテゴリーへ