我的代码的作用是:我的活动有一个CountDownTimer
,当用户按下按钮时开始。完成后,播放声音。下面的代码:如何在CountDownTimer内定期调用一个方法?
public class PrepTimer extends CountDownTimer {
public PrepTimer(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
}
@Override
public void onTick(long millisUntilFinished) {
updateSessionRemaining(millisUntilFinished);
setPrepDigits(millisUntilFinished);
}
@Override
public void onFinish() {
session.setPrepRemaining(0);
playSound();
}
}
我想什么它做的事:我想的声音定期在计时器的过程中(在末尾附加)玩。例如,在十分钟的计时器中,声音可能每60秒播放一次。
观光我试着:
- 使用
onTick
方法内的if
语句来检查当millisUntilFinished
等于一定值(60秒的倍数,例如),然后运行方法。这似乎是最直接的解决方案,但我发现该方法不会始终如一地触发(也许millisUntilFinished
跳过了我检查的值?)。 - 创建单独的嵌套
CountDownTimers
并使用for
循环重复。问题在于代码很快变得过于复杂,我的直觉告诉我,我不应该在定时器中运行定时器。
问题:如何在CountDownTimer过程中定期运行一个方法?
使用你的第一种方法,使它更宽容一点。不要测试60年代的界限。测试当前60秒间隔播放的声音。 – tynn
好主意@tynn。我有一个想法,让另一个计时器有一个'tick'间隔,你想要播放声音,而'onFinish'也可以播放声音。我认为这是一个可行的解决方案。 – Vucko