我们正在开发一个依赖于实时的分布式系统数据库同步。
由于设备的时间可以由用户或故障网络更改,因此可以非常轻松地破坏整个数据库。因此,我们决定从主服务器获取时间,存储它,并通过计算通过计算时钟周期数来传递的时间间隔来计算实时。 我们如何才能访问硬件的时钟周期。我们还要为此运行一些服务吗?我们希望即使在设备处于待机状态/休眠/关闭时也会计算滴答数。就像显示的实际时钟一样。 我们希望它是一种并行时钟,只需要主服务器就可以设置时间。
答案 0 :(得分:4)
我们如何才能访问硬件的时钟周期。
你没有。
我们希望即使在设备处于待机状态/休眠/关闭时也会计算滴答声。
您的用户没有。您的用户希望他们的设备能够正常运行,而不是让某些软件保持CPU开机并占用RAM,只需观察时钟滴答声,因为这会很快耗尽电池电量。
也许你附近的“偏远地区和村庄”的情况有所不同。在宇宙的大多数已知部分中,即使您的应用未运行,时间也会过去。
因此,您不需要“计算滴答”来确定时间是否过去。相反,当您“从主服务器获取时间”和“存储它”时,还存储当前值SystemClock.elapsedRealtime()
,这是自手机上次以来的毫秒数重新启动。然后,当您需要确定相对于“主服务器”的时间时,您计算存储的elapsedRealtime()
值与当前elapsedRealtime()
值之间的差异,并将该毫秒数添加到“时间”从主服务器“获取当前时间”主服务器“。