我正在尝试实现诸如倒数计时器之类的功能,该功能可以在选定的一半分钟内显示一条消息。例如,如果我设置为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();
}

10-08 08:16