在android中不断更新时间的最佳方法

时间:2015-06-11 08:56:30

标签: android

我不想使用系统时间。并且我不希望每分钟获得上网时间一次,以使我的应用中的textview保持最新状态。我从服务器那里得到时间,然后每秒增加一次时间并格式化,然后将它放在我的textview中。在约2小时 <=> 2分钟后,我怎样才能更准确地更新时钟?

          new Runnable (){
            public void run() {
            TextView.setText(formatTime(serverTime));
            serverTime+=1;
            handler.postDelayed(this,1000);
        }
    };

}

1 个答案:

答案 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));