我正在尝试实现诸如倒数计时器之类的功能,该功能可以在选定的一半分钟内显示一条消息。例如,如果我设置为6分钟,则当倒数计时器达到3分钟时,它将显示吐司,然后继续滴答。
它不起作用
我曾经问过这个问题,但是我被要求澄清我的问题,所以我希望它会解决。
// 6 min =360,000 millisecond
final long millis=360000;
new CountDownTimer(millis,1000) {
@Override
public void onTick(long millisUntilFinished) {
long halftime =millis/2;
if (millisUntilFinished == halftime){
Toast.makeText(CommentJouerActivity.this, "Halftime sir", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onFinish() {}
}.start();
最佳答案
嗯我想我最近也遇到了类似的问题。
您将滴答频率设置为1秒== 1000毫秒,但我认为onTick()方法可能具有一些最小的时间偏移(例如每滴答1或2毫秒)。因此,您可能会错过一半的半场时间。
我对你没什么主意。
1)您可以更早地计算中场时间,因此不必每隔一个滴答就计算一次。并将其从onTick()主体中删除。
final long millis=360000;
long halftime =millis/2;
2)您可以以一定的余量来检查半场时间,例如半秒拍时间:
if (millisUntilFinished + 500 > halftime && millisUntilFinished - 500 < halftime) {
Toast.makeText(CommentJouerActivity.this, "Halftime sir", Toast.LENGTH_SHORT).show();
}