Мне нужно измерить прошедшее время на Android, и между ними могут быть перезагрузки устройства.
Насколько я понимаю, System.nanoTime()
сбрасывается каждый раз при перезагрузке устройства, а System.currentTimeMillis()
ненадежен, потому что пользователь может его изменить.
Единственное решение, которое я придумал, это прослушать ACTION_SHUTDOWN
и BOOT_COMPLETED
, использовать System.currentTimeMillisec()
для расчета прошедшего времени (надеюсь, пользователь не может изменить время на часах, когда устройство выключено :)) и добавить его к последним System.nanoTime()
, которые у меня были. перед выключением.
Честно говоря, мне не нравится это решение, потому что оно очень дорогое (мне нужно прослушать 2 трансляции) и неточное, но я не мог придумать другого способа сделать это.
Любые идеи? Также нативное решение было бы хорошо для меня.
System.currentTimeMillisec()
на основе внешних источников времени (возможно, NTP, GSM, GPS,?) — вмешательство пользователя не требуется и, возможно, при загрузке (т. е. доBOOT_COMPLETED
). Вы также можете использовать внешнюю службу времени, но для этого требуется доступ к сети. - person zapl   schedule 11.12.2013