在 Android 上测量经过的长时间(重启)

dma*_*ato 5 time android reboot time-measurement elapsedtime

我需要测量 Android 上的长时间运行时间,并且可能会在两者之间重新启动设备。

据我所知,System.nanoTime()每次设备重新启动时都会重置,并且System.currentTimeMillis()不可靠,因为用户可以更改它。

我想出的唯一解决方案是听ACTION_SHUTDOWNand BOOT_COMPLETED,用于System.currentTimeMillisec()计算经过的时间(用户无法在设备关闭时更改时钟时间,希望 :) )并将其添加到System.nanoTime()我关闭之前的最后一次。

老实说,我不喜欢这个解决方案,因为它非常昂贵(我需要收听 2 个广播事件)并且不准确,但我想不出任何其他方法来做到这一点。

有任何想法吗?本地解决方案对我也有好处。

Dav*_* S. 1

您可以通过使用互联网时间服务器来获取您检查的时间来绕过用户更改时间。有几种方法可以做到这一点。

如果您只是保留这个值,那么用户就无法做任何事情来扰乱您的计算。