CountDownTimer实现View控件显示倒计时功能

一、简介

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


CountDownTimer实现View控件显示倒计时功能_第1张图片
图1:normal 状态

CountDownTimer实现View控件显示倒计时功能_第2张图片
图2:开始倒计时后的状态
二、用法
//参数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();
    }
}

你可能感兴趣的:(CountDownTimer实现View控件显示倒计时功能)