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

Android Studio Java实现1分钟倒计时结束后跳转Activity并重置计时器

解决方案

核心实现思路

  • 将CountDownTimer定义为类成员变量,方便全局控制计时器的启动、取消、重置操作,避免匿名内部类持有Activity引用导致的内存泄漏
  • 在onFinish回调中实现Activity跳转逻辑,可根据需求选择是否销毁当前倒计时页面,保证下次进入时倒计时可以重新启动
  • 在Activity的生命周期回调中添加计时器销毁逻辑,避免页面退出后计时器仍在运行占用资源
  • 计时器启动逻辑放入onResume回调,保证每次页面回到前台展示时都会重新触发倒计时

修改后完整代码

public class BeginAfter extends AppCompatActivity {

    TextView textView;
    // 定义计时器成员变量
    private CountDownTimer countDownTimer;
    // 倒计时总时长1分钟
    private final long DURATION = TimeUnit.MINUTES.toMillis(1);

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_begin_after);
        textView = findViewById(R.id.timer);
    }

    @Override
    protected void onResume() {
        super.onResume();
        // 每次页面回到前台时启动倒计时
        startCountDown();
    }

    @Override
    protected void onPause() {
        super.onPause();
        // 页面退到后台时销毁计时器,避免内存泄漏
        if (countDownTimer != null) {
            countDownTimer.cancel();
            countDownTimer = null;
        }
    }

    private void startCountDown() {
        countDownTimer = new CountDownTimer(DURATION, 1000) {
            @Override
            public void onTick(long l) {
                String sDuration =
                        String.format(
                                Locale.ENGLISH,
                                "%02d",
                                TimeUnit.MILLISECONDS.toSeconds(l) -
                                        TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(l))
                        );
                textView.setText(sDuration);
            }

            @Override
            public void onFinish() {
                // 先更新UI显示0
                textView.setText("00");
                // 跳转目标Activity,这里把TargetActivity替换为你自己的目标页面类名
                Intent intent = new Intent(BeginAfter.this, TargetActivity.class);
                startActivity(intent);
                // 如果需要跳转后销毁当前倒计时页面,添加下面这行,下次进入会重新走onCreate流程
                finish();
            }
        }.start();
    }
}

可选调整说明

如果不需要倒计时在页面退到后台时重置,而是要保留剩余时长下次进入继续倒计时,可以新增成员变量存储剩余毫秒数,onPause时记录当前剩余时间,onResume时用剩余时长创建计时器即可,不需要每次都用完整的1分钟时长。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 02:57:01