Android应用开发中,想要在多少秒之后执行一个操作是非常常见的场景。使用线程或者计时器来执行固然是一个好方法,但是如果我们想实现倒计时并且还可以每秒钟更新一下UI,或许使用Google自带的CountDownTimer是一个更好更简单的选择。
代码如下:
private CountDownTimer timer;
//定义倒计时的时间,例如30秒
private int waittingTimeout = 30;
//定义方法,使用的时候直接调用方法即可开启倒计时
private void countdown() {
if (timer != null) {
timer.cancel();
}
timer = new CountDownTimer(
waittingTimeout * 1000, 1000) {
@Override
public void onTick(long millisUntilFinished) {
//更新主线程的操作,例如更新页面中的文本,剩余x秒之类的
binding.tvLeftWaitTime.setText(String.valueOf((int) millisUntilFinished / 1000));
}
@Override
public void onFinish() {
//倒计时完成之后的操作,例如关闭弹窗
dismiss();
}
};
timer.start();
}
//activity中可以放在onDestroy中销毁
@Override
protected void onDestroy() {
if (timer != null) {
timer.cancel();
}
super.onDestroy();
}
//如果是弹框中调用,可以放在dismiss中销毁
@Override
public void setOnDismissListener(OnDismissListener onDismissListener) {
super.setOnDismissListener(onDismissListener);
if (null != timer) {
timer.cancel();
}
}