Java, Как сделать точную задержку для секундомера?
Есть следующий метод запуска секундомера. Ещё не дописан до конца, но работает.
private void startStopwatch() {
stopwatchRunning = true;
Thread thread = new Thread() {
public void run() {
while (stopwatchRunning) {
msCounter++;
msStr = String.valueOf(msCounter);
secStr = String.valueOf(sec);
minStr = String.valueOf(min);
if (msCounter < 10) {
msStr = "0" + msCounter;
}
if (msCounter == 99) {
//Прошла ещё 1 секунда
sec++;
msCounter = 0;
}
//timeViewStopwatch.setText(msStr);
timeViewStopwatch.setText(minStr + ":" + secStr + ":" + msStr);
try {
Thread.sleep(10);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
}
};
thread.start();
}
Проблема в том, что когда я проверил секундомер по часам, он отстал на целых 13 секунд...
P.S. Делать задежку через TimeUnit я тоже пробовал, но он как отставал, так и отстаёт.