我想跨多個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設備,它在不同的時間到達這些設備... –
有一個重寫計時器,採取特定的日期對象的第一次執行。您可以將毫秒轉換爲日期並使用該版本。 –