声明: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();//销毁掉倒计时 }