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

Android Studio中Level1的CountDownTimer切换至下一个Activity后仍持续运行的问题求助

解决CountDownTimer跳转Activity后持续运行的问题

问题出在CountDownTimer不受Activity生命周期自动管理,当你跳转到新Activity后,原来的Timer实例还会在后台继续执行倒计时,不仅浪费资源,还可能因为原Activity的控件(比如你的tv_timer)已经被销毁,触发空指针异常。

给你两个关键修改步骤,轻松解决:

1. 将Timer改为Activity成员变量

把原来的局部变量timer提升为Activity的成员变量,这样在Activity的生命周期方法里能访问到它:

public class easyQuiz1 extends AppCompatActivity {
    private CountDownTimer timer; // 成员变量
    private int secondsRemaining = 30;
    private TextView tv_timer; // 记得初始化这个控件

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.your_layout);
        tv_timer = findViewById(R.id.tv_timer); // 绑定控件

        // 初始化并启动Timer
        timer = new CountDownTimer(30000, 1000) {
            @Override
            public void onTick(long l) {
                secondsRemaining--;
                tv_timer.setText(Integer.toString(secondsRemaining) + "sec");
            }

            @Override
            public void onFinish() {
                Intent intent = new Intent(easyQuiz1.this, TryAgain1.class);
                startActivity(intent);
                finish();
            }
        }.start();
    }
}

2. 在Activity销毁时取消Timer

重写Activity的onDestroy()方法,在这里调用timer.cancel(),确保Activity被销毁时Timer也随之停止:

@Override
protected void onDestroy() {
    super.onDestroy();
    // 判空避免空指针
    if (timer != null) {
        timer.cancel();
    }
}

额外补充:主动跳转时提前停止Timer

如果是通过按钮主动跳转到下一关,建议在跳转前就手动取消Timer,避免不必要的倒计时执行:

// 示例:跳转下一关的按钮点击事件
findViewById(R.id.btn_next_level).setOnClickListener(v -> {
    if (timer != null) {
        timer.cancel();
    }
    Intent intent = new Intent(easyQuiz1.this, NextLevelActivity.class);
    startActivity(intent);
    finish();
});

这样修改后,不管是Activity自动销毁还是主动跳转,Timer都会被及时停止,不会再后台乱跑了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 22:45:32