我正在开发一个 Android 应用程序,并遇到了确定系统首次启动时间的问题。我的意思是我需要测量多少从设备首次启动起已经过了时间.
我知道有关侦听 ACTION_BOOT_COMPLETED 并将任何内容保存在 SharedPreferences 中的解决方案,但我需要另一种解决方案,因为这个解决方案在某些情况下不起作用。也许有任何系统属性?
Use case(摘自讨论 https://chat.stackoverflow.com/rooms/102325/discussion-between-ankitagrawal-and-oneworld)
- 我从服务器收到的每个文件的文件名都包含时间戳
取自
System.currentMillis()
- 我比较这些时间戳以确定最新的文件是哪个。
- 现在,用户将系统时间提前几个月更改。
- 我仍然能够确定用户更改系统时间后下载的最新文件。
- 现在,用户将时间更改回原始设置。
- 比较时间戳时,第 4 步下载的文件始终获胜。
解决此问题的灵丹妙药是从第一次启动(恢复出厂设置后)开始计算秒数的时间戳。就像SystemClock.elapsedRealtime()
但每次启动后无需重置。不幸的是,到目前为止的答案告诉我们,这个灵丹妙药并不存在。
然而,许多答案显示了解决该问题的多种选择。 OneWorld123 评论了每个答案,看看这是否适合他的需求。
也许有任何系统属性?
不确定系统属性,但有SystemClock https://developer.android.com/reference/android/os/SystemClock.html提供 API 来获取系统正常运行时间的类:
SystemClock.uptimeMillis() https://developer.android.com/reference/android/os/SystemClock.html#uptimeMillis%28%29 which
返回自启动以来的毫秒数,不计算深度睡眠的时间.
您还可以使用SystemClock.elapsedRealtime() https://developer.android.com/reference/android/os/SystemClock.html#elapsedRealtime%28%29 which
返回自启动以来的毫秒数,包括睡眠时间.
希望这可以帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)