Android — для измерения времени между двумя нажатиями кнопок

#java #android #timer

#java #Android #таймер

Вопрос:

У меня есть кнопка с именем Check In . Моя цель состоит в том, чтобы по щелчку изменить текст и начать отсчет времени. Таймер должен остановиться при следующем щелчке мыши. В нем должно быть указано время, затраченное между двумя нажатиями кнопок.

Комментарии:

1. я сомневаюсь в использовании службы сигнализации и обычного таймера в java.

Ответ №1:

При первом нажатии создайте переменную:

 long startTime = System.currentTimeMillis();
 

Затем при втором нажатии вы можете вычислить разницу:

 long difference = System.currentTimeMillis() - startTime;
 

difference / 1000 даст вам разницу в секундах. Надеюсь, это поможет.

Комментарии:

1. Я предложу использовать SystemClock.elapsedRealtime() вместо System.currentTimeMillis() . В документации говорится: System.currentTimeMillis() являются ли стандартные «настенные» часы выражением миллисекунд с начала эпохи. Настенные часы могут быть установлены пользователем или телефонной сетью, поэтому время может непредсказуемо перемещаться назад или вперед. elapsedRealtime() и elapsedRealtimeNanos() возвращает время с момента загрузки системы. Эти часы гарантированно будут монотонными и продолжают тикать, даже когда процессор находится в режиме энергосбережения, поэтому они являются рекомендуемой основой для интервальной синхронизации общего назначения.

Ответ №2:

Я думаю, что лучше использовать System.nanoTime() вместо System.currentTimeMillis() , поскольку currentTimeMillis() зависит от того, на какое время установлены системные часы, которые можно изменить.

nanoTime() однако на самом деле предназначен для измерения прошедшего времени в соответствии с JavaDoc.

Ответ №3:

Вы можете использовать System.currentTimeMillis() (или создать новый Date или GregorianCalendar экземпляр) по щелчку мыши.

Сохраните его где-нибудь. При следующем нажатии сделайте то же самое. Затем сравните время.