用countdowntimer实现60秒倒计时获取验证码

博主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秒的情况。

好以上就是我的倒计时的内容,第一次写,有什么不足还请大家指教,如果上面的代码有什么问题还请指出,共同讨论共同进步,谢谢

猜你喜欢

转载自blog.csdn.net/zzagtio/article/details/79358921