设备中的时钟是否始终返回特定时间,与用户时间设置和互联网连接无关? 在检查许可证是否已过期时,这样的时间非常有用。
答案 0 :(得分:4)
设备中的时钟是否总是返回一定时间,与用户时间设置和互联网连接无关?
不,抱歉。
答案 1 :(得分:2)
GPS时钟独立于系统时钟/时间设置和网络连接。
您可以通过请求位置修复并访问Location
getTime()
来获取时间戳。
当然,这不是用于许可证检查目的的防弹,因为它也可能是欺骗性的。 @ CommonsWare的评论说明也值得考虑:
请注意,这仅适用于拥有GPS的设备,用户启用了GPS,您可以获取GPS信号,以及您不介意要求获得
ACCESS_FINE_LOCATION
权限的应用。因此,这并不是“永远”,尽管它可能满足许多需求。
答案 2 :(得分:0)
没有时间使用这个用例。 Android中可用时间的Here is a list:
有三种不同的时钟,不应混淆:
System.currentTimeMillis()是标准的“墙”时钟(时间和时间) date)表示自纪元以来的毫秒数。挂钟可以 由用户或电话网络设置(参见setCurrentTimeMillis(long)), 所以时间可能会不可预测地向后或向前跳跃。这个时钟 只应在与真实世界日期对应时使用 时间很重要,例如在日历或闹钟应用程序中。 间隔或经过时间测量应使用不同的时钟。如果 你正在使用System.currentTimeMillis(),考虑收听 ACTION_TIME_TICK,ACTION_TIME_CHANGED和ACTION_TIMEZONE_CHANGED 意图广播以找出时间的变化。
uptimeMillis()是 自系统启动以来以毫秒为单位计算。这个时钟停止了 当系统进入深度睡眠状态时(CPU关闭,显示黑暗,设备 等待外部输入),但不受时钟缩放的影响, 闲置或其他节电机制。这是大多数人的基础 间隔时间,如Thread.sleep(millls),Object.wait(millis)和 System.nanoTime()。这个时钟保证是单调的,并且是 当间隔不跨越设备时适用于间隔定时 睡觉。大多数接受时间戳值的方法目前都期望 uptimeMillis()时钟。
elapsedRealtime()和elapsedRealtimeNanos() 返回自系统启动以来的时间,并包括深度睡眠。 这个时钟保证是单调的,并且继续打勾 当CPU处于省电模式时,建议的基础也是如此 通用间隔时间。