我想跨多个Android设备同步操作。为此,我有一个telnet客户端,可以将消息发送给他们。使用System.currentTimeMillis()进行定时器调度的同步
目前我发送消息像DoWork On 1397131360435
到设备。你可以注意到最后一个参数是时间戳。
在我的代码的那一刻我计算给定的参数之间的时间差,并使用TimerTask
叫我想方法。
但是,这并不工作,完全像我想的,因为网络延迟的影响,并且该命令到达装置的时间有点不同,导致设备之间的延迟几毫秒。
有没有一种方法可以等待特定的时间戳,然后运行我想要的方法?
目前,我这样做:
msDelay = Long.parseLong(args.get(2)) - System.currentTimeMillis();
//inside a listener
new java.util.Timer().schedule(
new java.util.TimerTask() {
@Override
public void run() {
mySyncMethod();
}
},
msDelay
);
所以,我的意思是,我要运行mySincMethod
的时间戳时1397131360435
....不仅仅是其与当地System.currentTimeMillis()
计算当前时间和给定时间戳,并使用该差作为在定时器延迟之间的差。 –
@Tim多数民众赞成我现在正在做的......我发送这个命令到10设备,它在不同的时间到达这些设备... –
有一个重写计时器,采取特定的日期对象的第一次执行。您可以将毫秒转换为日期并使用该版本。 –