一、简介
CountDownTimer 是 Android 提供的一个实现倒计时功能的抽象类,常用于实现“发送验证码”时改变按钮的文本显示,如下图:


二、用法
//参数1指倒计时的总时间(ms);参数2指倒计时的频率(ms)。即倒计时60s,一次减少1m
new CountDownTimer(60 * 1000, 1000) {
//millisUntilFinished参数是按指定频率改变后的时间
@Override
public void onTick(long millisUntilFinished) {
btn_verifyCode.setText(millisUntilFinished / 1000 + "s后重发");
}
@Override
public void onFinish() {
btn_verifyCode.setText("发送验证码");
}
}.start();
三、注意事项
- CountDownTimer 需要调用 start() 方法手动开始,调用 cancel() 方法可以手动结束。
- 由于 CountDownTimer 内部采用了 handler 机制,所以应该在适当的时候调用 cancel() 方法取消倒计时,否则当 handler 持有的 Activity 或 Fragment 引用被销毁时,CountDownTimer 如果没有计时结束,就会在后台一直运行,造成内存泄漏。因此,应当如下图所示在 Activity 被销毁时取消倒计时。
@Override
protected void onDestroy() {
super.onDestroy();
if (mTimer != null) {
mTimer.cancel();
}
}
网友评论