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
相关产品推荐
相关产品推荐

