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

Android应用中Chronometer的onChronometerTick事件仅触发一次问题排查

问题原因

  • 错误覆盖全局Chronometer实例
    你在onChronometerTick回调中写了chronometer = chronometerChanged;代码,直接覆盖了之前初始化、绑定了监听器的全局实例,导致后续tick事件无法关联到原有配置的实例,自然停止触发。
  • Chronometer未挂载到视图树
    Chronometer是Android View子类,必须附加到当前活跃的窗口视图树中才会持续分发每秒一次的tick事件。你仅通过new Chronometer(this)创建了实例,没有将其添加到Activity的布局中,未挂载的实例仅会在调用start()时触发1次tick,之后就停止运行。
  • (可选)业务逻辑误触发停止
    如果seconds变量取值为1,第一次tick就会命中count >= seconds的判断逻辑,若你后续隐藏或销毁了Chronometer也可能导致事件中断,但概率低于前两个问题。

修复步骤

  1. 删除onChronometerTick回调中的chronometer = chronometerChanged;这行冗余代码,全局实例仅需要在onCreate中初始化一次即可。
  2. 将Chronometer挂载到视图树,二选一即可:
    • 优先在XML布局中声明Chronometer控件,之后通过findViewById()绑定实例,无需动态创建
    • 如果需要动态创建,在onCreate中初始化实例后,调用根布局的addView(chronometer)方法将其加入布局,不需要显示可以额外设置chronometer.setVisibility(View.GONE),不影响事件分发
  3. 校验txt_seconds输入的取值,确保seconds变量大于1,避免第一次tick就触发重置逻辑影响测试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 19:24:05