【发布时间】:2014-05-24 03:14:45
【问题描述】:
我想跨多个 Android 设备同步操作。为此,我有一个 telnet 客户端,我可以向他们发送消息。
目前我向设备发送类似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
);
所以我的意思是,我想在时间戳为1397131360435....时运行mySincMethod,而不仅仅是它与本地System.currentTimeMillis()的区别
【问题讨论】:
-
计算当前时间与给定时间戳之间的差值,并将此差值用作 Timer 中的延迟。
-
@Tim 这就是我现在正在做的事情...我将此命令发送到 10 个设备,它会在不同时间到达这些设备...
-
有一个重写的 Timer,它在第一次执行时采用特定的 Date 对象。您可以将毫秒转换为日期并使用该版本。
标签: java android datetime scheduled-tasks