我正在开发一个应用程序,需要定期知道系统启动的时刻
我使用System.currentTimeMillis();
以毫秒获得当前的“日期”
我用SystemClock.elapsedRealTime()
得到系统已经过去的实际时间
我用经过的时间减去总时间,然后检索系统启动时间。
我会理解,如果值随时间的变化(毫秒执行指令的不同时间)。但对我而言,它改变了秒!很奇怪。
有人知道为什么?
答案 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