您的位置:首页 > 移动开发 > Android开发

简单实现Android倒计时功能

2017-08-04 16:15 417 查看
这里列举了一个简单实现倒计时的例子Timer+Handler。

首先创建一个Timer对象,并设立一个倒计时开始时间recLen

Timer timer = new Timer();
private int recLen = 120;


一个Timer是可以开启很多任务的,每个任务都用一个TimerTask表示。因此需要创建一个自定义的TimerTask用来实现自己的需求,更重要的是不用销毁Timer从而可以创建多个TimerTask。

class MyTimerTask extends TimerTask{

@Override
public void run() {
recLen--;
Message message = new Message();
message.what = 1;
handler.sendMessage(message);
}
}


倒计时开始,我们用Hanlder进行UI更新

final Handler handler = new Handler(){
@Override
public void handleMessage(Message msg){
switch (msg.what) {
case 1:
codeBtn.setText(recLen+"s");
if(recLen < 0){
if (myTimerTask!=null) {
myTimerTask.cancel();
myTimerTask = null;
}
isWaitCode = false;
}else{
isWaitCode = true;
}
showUI();
}
}
};


在代码相应位置调用计时器开启

myTimerTask = new MyTimerTask();
timer.schedule(myTimerTask, 1000, 1000);


这里需要注意的是,当上述代码中myTimerTask.cancel()  改为 timber.cancel(),那么再次调用timer的schedule方法会报异常
java.lang.IllegalStateException: TimerTask is scheduled already是因为Timer已经被cancel,不能再调用schedule方法了,我们可以用TimerTask的cancel方法,这样只是关闭了一个task而不会关闭掉整个Timer。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android
相关文章推荐