Напишите приложение для секундомера в Blackberry, как сделать его более точным - PullRequest
3 голосов
/ 30 октября 2010

Мое приложение имеет такую ​​функцию, как приложение BlackBerry Stopwatch:
Метка, отображающая время, обновляемая каждые 100 миллисекунд.

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

Все работает нормально, но я заметил, что секундомер в моем приложении работает немного медленнее, чем встроенный секундомер BlackBerry - он теряет 1 секунду в минуту.
Иногда таймер в моем приложении останавливается на некоторое время, около 300-500 миллисекунд, по неизвестным причинам.

Что может сделать таймер в моем приложении медленнее, чем секундомер BlackBerry?
Любые предложения по созданию секундомера, который работает так же гладко, как секундомер BlackBerry?

Ответы [ 2 ]

3 голосов
/ 30 октября 2010

Вы должны использовать System.currentTimeMillis () для вычисления времени. Таймер не гарантирует, когда он будет выполняться - гарантия состоит в том, что указанное время является минимальной задержкой до начала выполнения, но, как вы заметили, максимума нет. Поэтому используйте таймер для планирования обновлений пользовательского интерфейса, но рассчитайте истекшее время с помощью System.currentTimeMillis ().

2 голосов
/ 30 октября 2010

Полагаю, вам не следует полагаться на добавление периодов времени.Таким образом, 60-кратный сон в течение 1 секунды не следует рассматривать как минуту.

Вместо этого спите в течение секунды, а после пробуждения проверьте системное время.

...