博主android新手,有什么不足求轻喷。
下面看下我的代码先
private void countDown() {
timer = new CountDownTimer(60900, 1000) {
@Override
public void onTick(long millisUntilFinished) {
Message msg = Message.obtain();
msg.arg1 = (int)millisUntilFinished/1000 -1;
msg.what = 10;
handler.sendMessage(msg);
}
@Override
public void onFinish() {
timer.cancel();
}
}.start();
}
记得按钮设置为不可点击。
上面是我倒计时的主要方法,因为CountDownTimer中取到的millisUntilFinished有偏差还有倒计时不到0,所以对CountDownTimer的第一个参数进行了处理。
处理的方法我参考了博主涛声依旧Cjt的微博:http://blog.csdn.net/u010898329/article/details/75005814
然后通过handler把时间传递出去,然后做判断
最主要的是最后的当时间返回0时,要添加timer.cancel();还有timer=null;
因为当返回的时间为0时,onfinish()方法不会马上执行(大概延迟1或2秒执行),而获取验证的按钮在为0是又处于可点击状态,所以如果在时间返回0时候马上就点击获取验证码,会重新倒计时,但是1或2秒后会执行上一个timer的onfinish()里面的timer.cancel()方法,所以第二个的timer会被取消掉,出现倒计时停在59秒或58秒的情况。
好以上就是我的倒计时的内容,第一次写,有什么不足还请大家指教,如果上面的代码有什么问题还请指出,共同讨论共同进步,谢谢