Android的计时器与Java的有点不同,需要配套TimerTask使用,基本的用法如下:
final Handler handler = new Handler() {
// 定义处理信息的方法
public void handleMessage(Message msg) {
switch (msg.what) {
case 1:
// 处理代码 for example
Intent intent = new Intent(Demo.this,
TestDemoActivity.class);
startActivity(intent);
break;
}
super.handleMessage(msg);
}
};
TimerTask timerTask = new TimerTask() {
@Override
public void run() {
Message message = new Message();
message.what = 1;
handler.sendMessage(message);
}
};
// new一个计时器实例
Timer timer = new Timer();
// new一个计时器任务的实例,并重写其run方法,定义触发的动作
// 设定计时器的任务以及时间
timer.schedule(timerTask, 1500);
复制代码Timer有个Cancel的方法,一旦调用,之后再schedule任务就会报错.同样,TimerTask也可以取消,但当Timer计时完毕触发调用该任务时就会报错说,该任务已取消!
所以要实现循环计时的动作,可以用以下的方法:
Timer timer = null;
final Handler handler = new Handler() {
// 定义处理信息的方法
public void handleMessage(Message msg) {
switch (msg.what) {
case 1:
// 处理代码
timer.cancel();
break;
}
super.handleMessage(msg);
}
};
;
class MyTimeTask extends TimerTask {
@Override
public void run() {
Message message = new Message();
message.what = 1;
handler.sendMessage(message);
}
}
// 某处调用timer*************************************************************
timer = new Timer(); // 计时任务开始
timer.schedule(new MyTimeTask(), 2000);