通过套接字同步秒表运行时间

时间:2019-04-01 18:38:11

标签: android

当前,秒表在通过套接字服务器保持同步的多个设备上运行。当设备启动秒表时,它会向套接字服务器发送一条消息,其他正在监听的客户端也会看到此消息,并也启动秒表。没有大量的延迟,因此在它们运行时,时间彼此之间有一点距离并不重要。

但是,当按下“暂停”或“停止”时,我们希望在暂停客户端设备上显示的最终时间也与所有设备上显示的时间相同。

当前,这是计时器停止/暂停时发生的情况:

long time = Long.parseLong(message);
mChronometer.setBase(time);

正在发送的消息来自此处的代码:

this.sendWebRequestStopTimer(mChronometer.getBase())

虽然确实会调整时间,但通常会稍微缩短不到一秒的时间,通常为100-400毫秒。我认为这是因为尽管有相同的NTP服务器,但每个设备的时间都略有不同。

简而言之,是否有更好的方法来调整代码,以使子设备显示与父设备(击中暂停的时间)完全相同的时间?

注意:任何设备都可以播放/暂停/停止秒表。没有人负责控制此秒表功能。因此device 1可以启动计时器,device 2可以暂停它,而device 3可以恢复它。

1 个答案:

答案 0 :(得分:1)

让按下暂停/停止的设备将其时间发送到服务器,并将其回显到所有其他设备。除了硬连线的专用网络,实际上没有其他方法可以做到。即便如此,您仍可能会在10毫秒的范围内出现差异。当然,这可能会导致某些设备显示较小的数字,就像它回到过去一样。没有避免这种情况的真正方法。