Android Timer实现发送验证码倒计时

声明:btnGetCode是获取验证码的按钮控件

 /**
     * 发送验证码倒计时
     */
    public void sendCode() {
        //定义数组,90是倒计时的时间
        final int[] codeSecond = {90};
        //使用Timer进行倒计时
        timer = new Timer();
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                RegisterActivity.this.runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        if (codeSecond[0] <= 0) {
                            btnGetCode.setText("重新发送验证码");
                            btnGetCode.setClickable(true);//设置可点击
                            //执行完一段之后要将上一个计时器关闭,否则再次开启会有两个计时器同时运行
                            timer.cancel();
                        } else {
                            btnGetCode.setText("已发送(" + codeSecond[0] + ")");
                            codeSecond[0]--;
                            btnGetCode.setClickable(false);//设置不可点击
                        }
                    }
                });
            }
        }, 0, 1000);
    }

在btnGetCode里面调用这个方法

        btnGetCode.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                sendCode();//调用方法
            }
        });

最后别忘了在onDestroy里面讲timer计时器给销毁了,

否则finish掉当前页面之后还会继续倒计时,就会造成程序crash

    /**
     * 销毁
     */
    @Override
    protected void onDestroy() {
        super.onDestroy();
        timer.cancel();//销毁掉倒计时
    }


猜你喜欢

转载自blog.csdn.net/qq1271396448/article/details/79402520