我不想使用系统时间。并且我不希望每分钟获得上网时间一次,以使我的应用中的textview
保持最新状态。我从服务器那里得到时间,然后每秒增加一次时间并格式化,然后将它放在我的textview中。在约2小时 <=> 2分钟后,我怎样才能更准确地更新时钟?
new Runnable (){
public void run() {
TextView.setText(formatTime(serverTime));
serverTime+=1;
handler.postDelayed(this,1000);
}
};
}
答案 0 :(得分:0)
postDelayed(r, t)
没有任何实时保证,它或多或少在至少t
毫秒过期后发布。此外,几次调用后代码的总运行时间可能也会达到几秒钟,从而导致相关增量的累积。
在这种情况下,可能是使用系统时钟来计算delta:
long savedServerTime = timeFromServer();
long lastReceivedTime = System.currentTimeMillis();
后来:
long currentTime = System.currentTimeMillis();
long delta = (currentTime - lastReceivedTime) / 1000;
TextView.setText(formatTime(serverTime + delta));