在Java需要开定时器来定时完成的调度,有两种简单的方法,一种是标准的定时器实现;一种是间接通过Handler来定时调度来实现。
1,标准的定时器方法,依赖包类名如下:
import java.util.Timer;
{
private Timer testTimer = null;
private int test_timer = 0;
/***定义实现的任务***/
private class testTimerTask extends java.util.TimerTask{
@Override
public void run() {
test_timer ++;
if(test_timer >= 10)
{
test_timer = 0;
}
}
};
testTimer = new Timer();
testTimer.schedule(new testTimerTask(), 5000, 1000); /***5000:延迟多长时间后开始,1000:定时的周期;单位是ms(毫秒)****/
/*****结束后取消定时器******/
void releaseTimer()
{
testTimer .cancel();
testTimer = null;
}
}
2,借助Handler的实现方式:
import android.os.Handler;
import android.os.HandlerThread;
import android.os.Message;
{
private
Handler mTimerHandler = null;
private
Handler mHandlerMsg = null;
private
Runnable mTimeRefresher = null;
private int test_timer = 0;
mTimerHandler = new Handler(mcontext.getMainLooper());
mTimeRefresher = new Runnable() {
@Override public void run() {
test_timer++;
if (test_timer >= 10) {
test_timer = 0;
}
mTimerHandler.postDelayed(this, 1000); /*****1000:下次发生的时间,单位ms(毫秒)*****/
}
};
mTimerHandler.post(mTimeRefresher); /********第一次触发启动*********/
/*****结束后取消定时器******/
public
void releaseTimerHandler()
{
mTimerHandler.removeCallbacks(mTimeRefresher);
mTimeRefresher = null;
mTimerHandler = null;
}
}
以上两种方法中,因为第二种方法是通过UI的线程调度的,定时的精度不是很准确!容易受到外部的影响。