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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值