2013-05-10 4 views
2

У меня есть приложение, в котором я показываю хронометр для пользователя за то, что он делает. Всякий раз, когда действие переходит на задний план (с помощью кнопки «домой» или «назад»), я сохраняю это время (в секундах), и когда операция возвращается, я хочу продолжить хронометр, запущенный из того же самого времени. Пользователь может выбрать другой элемент из списка, а время другое, а также он может отключить телефон ... Я могу сэкономить время хронометра, однако я не могу установить его со временем начала.Android Начало хронометра с заданным значением

Из Chornometer API, метод setBase() состояния:

Установите время, что таймер подсчета находится в ссылке на.

В моем понимании, это означает, что если установить это значение CURRENTTIME, он начнет отсчет с 0. Теперь, если я хочу, чтобы начать с ценностной 17s, я думал о создании базы в currentTime меньше времени 17 секунд назад. Так что-то вроде:

setBase(system.currentTimeMillis() - (17 * 1000)). 

Однако это не сработает, и оно начинается всегда с 0!

Здесь я прочитал несколько других тем, и ни один из ответов не помог. Он всегда начинается с 0!

Заранее спасибо.

ответ

6

Я думаю, вам придется следить за некоторыми отметками времени самостоятельно.

Chronometer myChrono; 
long baseTime; 
long stopTime; 
long elapsedTime; 

При установке базового времени, вы хотите использовать:

baseTime = SystemClock.elapsedRealtime() - stopTime; 
myChrono.setBase(baseTime); 

Если вы хотите узнать, сколько времени прошло, использование:

elapsedTime = SystemClock.elapsedRealtime() - myChrono.getBase(); 

Взгляните SystemClock doc.

+0

Я делал дополнительный код в onResume, и это переопределяло код, который я пытался использовать для метода onCreate. Мой плохой ... Спасибо за помощь. –

5
setBase(system.currentTimeMillis() - (17 * 1000)) 

Должен быть изменен на

setBase(SystemClock.elapsedRealtime() - (17 * 1000)) 

В общем:

mChronometer.setBase (SystemClock.elapsedRealtime() - (nr_of_min * 60000 + nr_of_sec * 1000)))

Надеюсь, это сэкономит много людей u некоторое время :)

+0

Что делать, если вы выключите телефон в среднем? –

+0

@ NunoGonçalves, это старый пост, так что предположительно вы это поняли. Но я только что разработал решение для выживания и перезагрузки для себя. Поэтому, если это может помочь вам или кому-то еще, см. Http://stackoverflow.com/a/38546506/165164 –

Смежные вопросы