📅  最后修改于: 2023-12-03 15:24:06.477000             🧑  作者: Mango
在 Android 中,我们经常需要倒数计时器来实现一些需要倒计时的功能,比如验证码的倒计时、游戏倒计时等等。但是,在有些情况下,我们需要停止已经启动的倒数计时器。本文将介绍如何在 Android 中停止倒数计时器。
首先,我们需要定义一个倒数计时器类来实现倒计时的功能。这里,我们使用 Android 自带的 CountDownTimer 类来实现倒计时。
public class CountDownTimerWrapper extends CountDownTimer {
private OnCountDownTimerListener mListener;
public CountDownTimerWrapper(long millisInFuture, long countDownInterval, OnCountDownTimerListener listener) {
super(millisInFuture, countDownInterval);
mListener = listener;
}
public interface OnCountDownTimerListener {
void onTick(long millisUntilFinished);
void onFinish();
}
@Override
public void onTick(long millisUntilFinished) {
mListener.onTick(millisUntilFinished);
}
@Override
public void onFinish() {
mListener.onFinish();
}
}
上述代码定义了一个 CountDownTimerWrapper 类,并且实现了一个 OnCountDownTimerListener 接口,用于监听倒数计时器的运行状态。在 onTick 回调函数中,我们将当前倒计时的剩余时间传递给 mListener,以更新倒计时的 UI;在 onFinish 回调函数中,我们通知 mListener 倒计时已经结束。
在正式启动倒数计时器之前,我们需要先创建一个 CountDownTimerWrapper 类的实例,并且实现 OnCountDownTimerListener 接口中的两个回调函数。
CountDownTimerWrapper mCountDownTimer = new CountDownTimerWrapper(60000, 1000, new CountDownTimerWrapper.OnCountDownTimerListener() {
@Override
public void onTick(long millisUntilFinished) {
mTextView.setText(String.valueOf(millisUntilFinished / 1000));
}
@Override
public void onFinish() {
mTextView.setText("0");
}
});
上述代码创建了一个 60 秒倒计时器,并且在 onTick 回调函数中更新了一个 TextView 控件的文本内容。
启动倒数计时器的代码如下:
mCountDownTimer.start();
有时候,我们需要在倒计时器运行期间停止它的运行。这个时候,我们可以调用 CountDownTimerWrapper 类的 cancel() 方法。
mCountDownTimer.cancel();
通过上述步骤,我们就可以在 Android 中实现一个倒数计时器,并且能够在需要的时候停止它的运行。