【发布时间】:2014-05-26 19:22:57
【问题描述】:
现在我有一个像这样滴答作响的 CountDownTimer:
MyTimer(60000, 1);
所以它以 1ms 的间隔计时 60 秒。 我在我的计时器中发出 bpm 信号。
这是通过将每分钟除以 bpm 数来完成的:
public void onTick(long millisLeft) {
if (TimeUnit.MILLISECONDS.toSeconds(millisLeft) % (60 / bpm) == 0) {
doSignal();
}
}
这很好用,但前提是计时器设置为间隔 1000
MyTimer(60000, 1000);
这意味着它将每秒(每 1000 毫秒)滴答一次。但我需要它在 1 毫秒时打勾。
我的情况的问题是,如果计时器以 1ms 的间隔计时。它会在应该的时候启动信号 - 但会快速重复。
如果间隔为 1000 毫秒且 bpm 设置为 20,它将每隔三秒发出一次哔声 (60/20 == 3)。如果间隔设置为 1 毫秒,它将每隔三秒开始发出哔哔声 - 并在那一秒内重复哔哔声。
所以不知何故,我的条件在比我预期的 1ms 代码间隔更大的范围内为真。
如何设计我的条件,使其每 (60 / bpm) 秒仅触发一次,计时器间隔为 1ms?
【问题讨论】:
标签: java android algorithm timer countdowntimer