我们正在研究一个分布式系统数据库同步,它依赖于实时。
由于设备的时间可以由用户或故障网络更改,因此很容易损坏整个数据库。因此,我们决定从主服务器获取时间,存储它,并通过计算时钟滴答数来计算经过的时间间隔,从而计算实时时间。我们怎么才能知道硬件的时钟刻度。我们需要为此运行一些服务吗?我们希望即使在设备处于待机/睡眠/关机状态时也能计数。就像实际显示的时钟一样。我们希望它是一种并行时钟,只是只有主服务器能够在它上面设置时间。
如何访问硬件的时钟刻度
你没有。
我们希望即使在设备处于待机/睡眠/关机状态时也能计数。
您的用户不需要。你的用户希望他们的设备运行正常,而不是让一些软件保持CPU的运行并占用RAM,只是看着时钟滴答作响,因为这会很快耗尽电池。
也许在你附近的"偏远地区和村庄"情况不同。在宇宙的大多数已知部分,即使你的应用程序没有运行,时间也会流逝。
因此,您不需要"count ticks"来确定时间是否流逝。相反,当您"从主服务器获取时间"并"存储它"时,您还存储SystemClock.elapsedRealtime()
的当前值,这是自电话上次重新启动以来的毫秒数。然后,当您需要确定相对于"主服务器"的时间时,您计算存储的elapsedRealtime()
值与当前elapsedRealtime()
值之间的差值,并将该毫秒数添加到"来自主服务器的时间"中,以获得"主服务器"所看到的当前时间。