android错误启动时间

时间:2014-11-19 07:41:33

标签: android time boot

我正在开发一个应用程序,需要定期知道系统启动的时刻 我使用System.currentTimeMillis();以毫秒获得当前的“日期” 我用SystemClock.elapsedRealTime()得到系统已经过去的实际时间 我用经过的时间减去总时间,然后检索系统启动时间。

我会理解,如果值随时间的变化(毫秒执行指令的不同时间)。但对我而言,它改变了秒!很奇怪。
有人知道为什么?

1 个答案:

答案 0 :(得分:3)

秒(甚至几十秒)的差异应该不足为奇。 “当前时间”对应于用户从所显示的时钟感知的内容。如果您观看显示的时钟,它不会立即改变。阅读文档:

http://developer.android.com/reference/android/os/SystemClock.html

很明显,您不能依赖currentTimeMillis来处理需要毫秒精度的任何事情。但是,在大多数应用程序中,您确实不需要那么高的准确度......

如果您想要在特定时刻之后确定“确切的启动时间”,那么几秒钟可能是您要做的最好的。除此之外,什么是“引导”?内核加载后?当用户可以与设备交互时?设备屏幕亮起时?什么时候可以解锁设备?

你应该只是听RECEIVE_BOOT_COMPLETED(Android - Start service on boot)。

以下是Android文档:http://developer.android.com/reference/android/Manifest.permission.html#RECEIVE_BOOT_COMPLETED