You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中如何重启CountDownTimer?实现计时器结束后自动重复运行

实现CountDownTimer结束后自动重启的方案

Android的CountDownTimer实例执行完一次倒计时后就会失效,无法直接重启,你可以通过封装启动方法+在倒计时结束回调中重新调用启动方法实现自动重启效果,具体代码示例如下:

private CountDownTimer mCountDownTimer;
private static final long TOTAL_TIME = 300 * 1000; // 300秒
private static final long INTERVAL = 1000; // 每秒回调一次

// 封装启动计时器的方法
private void startCountDownTimer() {
    // 先取消可能存在的旧计时器,避免重复实例化
    if (mCountDownTimer != null) {
        mCountDownTimer.cancel();
    }
    
    mCountDownTimer = new CountDownTimer(TOTAL_TIME, INTERVAL) {
        @Override
        public void onTick(long millisUntilFinished) {
            // 处理每秒的倒计时逻辑,比如更新UI显示剩余时间
            long remainingSeconds = millisUntilFinished / 1000;
            // 示例:textView.setText("剩余时间:" + remainingSeconds + "秒");
        }

        @Override
        public void onFinish() {
            // 倒计时结束,自动重启计时器
            startCountDownTimer();
        }
    };
    // 启动计时器
    mCountDownTimer.start();
}

// 在需要启动的地方调用,比如Activity的onCreate里
// startCountDownTimer();

// 页面销毁时记得取消计时器,避免内存泄漏
@Override
protected void onDestroy() {
    super.onDestroy();
    if (mCountDownTimer != null) {
        mCountDownTimer.cancel();
        mCountDownTimer = null;
    }
}

关键说明

  • 每次重启都会创建新的CountDownTimer实例,旧实例在onFinish执行后已无法复用
  • 启动前取消旧计时器,防止多个计时器同时运行
  • 在页面销毁等生命周期节点取消计时器,避免内存泄漏

内容的提问来源于stack exchange,提问作者Babs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 16:55:22