【发布时间】:2019-05-02 22:32:18
【问题描述】:
当计时器达到特定时间(在本例中为 5 秒)时,我正在尝试使用 setOnChronometerTickListener() 重置计时器。但是,当我在手机上运行它时它会崩溃。我正在使用this quesion 的解决方案来重置计时器。
我尝试将计时器重置为不同的值,但它仍然在chronometer.setBase(SystemClock.elapsedRealtime()); 崩溃
这就是我的实现方式:
chrono.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() {
@Override
public void onChronometerTick(Chronometer chronometer) {
if(chronometer.getText().toString().equalsIgnoreCase("00:05")) {
// Reset Chronometer
chronometer.stop();
chronometer.setBase(SystemClock.elapsedRealtime());
}
}
});
这是我从 Logcat 得到的错误消息:
2019-05-02 14:47:39.469 13143-13143/com.example.pomodoro_2 E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.pomodoro_2, PID: 13143
java.lang.StackOverflowError: stack size 8MB
at android.widget.Chronometer.updateRunning(Chronometer.java:321)
at android.widget.Chronometer.stop(Chronometer.java:252)
at com.example.pomodoro_2.MainActivity$3.onChronometerTick(MainActivity.java:88)
at android.widget.Chronometer.dispatchChronometerTick(Chronometer.java:347)
at android.widget.Chronometer.setBase(Chronometer.java:176)
我从这个错误消息中假设我正在溢出堆栈,但我无法弄清楚为什么并且没有看到类似的错误。提前致谢。
【问题讨论】:
-
使用 postDelay 在处理程序中启动和停止计时器并再次检查。
标签: java android chronometer