我正在尝试实现一个简单的数字时钟,其中第二个和两个冒号每秒都在变化。我曾考虑过使用DigitalClock,但是我希望冒号和第二个闪存一样,并且不想显示上午/下午。所以我读了“从计时器更新UI”,它建议我们使用Handler。所以我使用Handler并且可以每秒更换第二个和冒号,但奇怪的是有时它会跳跃一秒钟(1,2,4,5,6)。时钟似乎有点滞后。有什么方法可以解决这个问题吗?谢谢!
tick_handler = new Handler();
Runnable updateSecond = new Runnable(){
@Override
public void run() {
second.setText(DataModel.getSeconds());
if(colon1.getVisibility()== View.VISIBLE){
colon1.setVisibility(View.INVISIBLE);
colon2.setVisibility(View.INVISIBLE);
} else {
colon1.setVisibility(View.VISIBLE);
colon2.setVisibility(View.VISIBLE);
}
tick_handler.postDelayed(this, 1000);
}
};
tick_handler.postDelayed(updateSecond, 0);
答案 0 :(得分:0)
我怀疑你在模拟器上看到这个,因为它比实际手机慢得多。尝试将tick_handler.postDelayed(this, 1000);
更改为小于1秒的值,例如500毫秒
tick_handler.postDelayed(this, 500);
并添加一个全局变量来跟踪每次线程运行之间的差异,如果差异为1秒,则更新视图。