Android的计时器与Java的有点不同,需要配套TimerTask使用,基本的用法如下:
Handler handler = new Handler() { // 定义处理信息的方法 public void handleMessage(Message msg) { switch (msg.what) { case 1: //处理代码 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(welcomeTask, 1500);
?
Timer有个Cancel的方法,一旦调用,之后再schedule任务就会报错.同样,TimerTask也可以取消,但当Timer计时完毕触发调用该任务时就会报错说,该任务已取消!
所以要实现循环计时的动作,可以用以下的方法:
private Handler handler = new Handler() { // 定义处理信息的方法 public void handleMessage(Message msg) { switch (msg.what) { case 1: //处理代码 timer.cancel(); break; } super.handleMessage(msg); } };; private Timer timer =null; private 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);
?