Возможно, вы захотите пересчитать currentTime
в цикле while
: -)
Вместо 10 секунд ожидания перед проверкой состояния конца, вы можете определить миллис, которые соответствуютдо вашего конечного времени и дождитесь количества миллисекунд между текущим и конечным временем.
Если ваше конечное время будет между 235950 и 235959, вы рискуете пропустить его.* update
Вы можете определить число миллисекунд ожидания следующим образом:
Calendar cal = Calendar.getInstance();
long now = cal.getTime().getTime();
cal.set(Calendar.HOUR_OF_DAY, 23);
cal.set(Calendar.MINUTE, 30);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
long endMillis = cal.getTime().getTime();
long timeToSleep = endMillis - now;
Обратите внимание, что вам нужно вычислить это также в цикле while, потому что сон можетбыть прерванным на следующей итерации потребуется меньше timeToSleep.