我想创建一些基于时间的事件使用天文钟。下面的代码正在成功显示烤面包机启动5秒后的烤面包,但我需要烤面包机在5/10/20秒显示。如果陈述使用onchronometerticklistener
我试过使用if(elapsedTime == 5000 || elapsedTime == 10000),但没有烤面包时显示当我使用==。
任何想法?
Chronometer.OnChronometerTickListener mChronoListener = new OnChronometerTickListener() { // listens to journey timer to initiate time based events
public void onChronometerTick(Chronometer arg0) {
long elapsedTime = SystemClock.elapsedRealtime() - arg0.getBase();
if (elapsedTime > 5000)
{
Toast.makeText(SafeDrive3Activity.this, "HOUR PASSED", Toast.LENGTH_LONG).show();
}
}
};
这似乎不大可能,你的'elapsedTime'将是基于1000毫秒整除什么设备正在做这可能会导致延迟时间'onChronometerTick(...)'被调用。换句话说,经过的时间可能是5001ms或5020ms,这取决于延迟对听众的呼叫的其他情况。在这种情况下,对精确值使用'=='将不起作用 - 除以1000,然后使用'== 5'或'== 10'进行比较。更好的是,除以1000,然后查看结果是否可以被5或10使用模数('%'运算符)完全整除。 – Squonk 2012-02-09 15:48:05
你是对的,谢谢! – Rob 2012-02-09 16:01:11