Хммм. Я думаю, что недавно столкнулся с подобной проблемой. Вы устанавливаете частоту тиков на 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();
}