#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
экземпляр) по щелчку мыши.
Сохраните его где-нибудь. При следующем нажатии сделайте то же самое. Затем сравните время.