Timer是一种定时器工具,用来在一个后台线程计划执行指定任务。它可以计划执行一个任务一次或反复多次。TimerTask一个抽象类,它的子类代表一个可以被Timer计划的任务。
TimerTask是一个抽象类,它的子类由 Timer 安排为一次执行或重复执行的任务。实际上就是一个拥有run方法的类,需要定时执行的代码放到run方法体内。
schedule的意思(时间表、进度表)。
Timer timer = new Timer();
// 注意javax.swing包中也有一个Timer类,如果import中用到swing包,要注意名字的冲突。
TimerTask task = new TimerTask() {
public void run() {
... //每次需要执行的代码放到这里面。
}
};
//以下是几种常用调度task的方法:
timer.schedule(task, time);
// time为Date类型:在指定时间执行一次(不周期)。
timer.schedule(task, firstTime, period);
// firstTime为Date类型,period为long
// 从firstTime时刻开始,每隔period毫秒执行一次。
timer.schedule(task, delay) // delay 为long类型:从现在起过delay毫秒之后执行一次(不周期)
timer.schedule(task, delay, period)
// delay为long,period为long:从现在起过delay毫秒以后,每隔period
// 毫秒执行一次。
举例:
touchTimer = new Timer(); // 初始化计时器
touchTimer.schedule(new TimerTask() { // 开启时间计时器
@Override
public void run() {
Thread thread = new Thread(new Runnable() { //创建子线程
@Override
public void run() {
// 创建Message用于发送消息
Message message = new Message();
message.what = 2; // message消息为2
// 发送消息给handler实现倒退显示图片
mHandler.sendMessage(message);
}
});
thread.start(); // 开启线程
}
}, 300, 200); // 设置0.3秒后执行定时器,定时器每0.2秒发送一次