1
我试图实现一个简单的数字时钟与第二和两个冒号每秒更改。我曾考虑过使用DigitalClock,但我希望冒号和第二个闪烁,并且不想显示上午/下午。所以我读了“从计时器更新用户界面”,并建议我们使用Handler。所以我使用Handler,可以每秒更改第二个和冒号,但奇怪的是,有时会跳过第二个(1,2,4,5,6)。看来时钟有点滞后。有什么办法可以解决这个问题吗?谢谢!Android处理程序跳过/跳一秒
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);
嗨,谢谢,我正在使用模拟器。刚刚改变1000到500,第二次停止跳跃,但有时,它变化非常快(34,35,迅速改变为36)。这可能是我在仿真器上运行它的问题,因为我使用了Thread.sleep(1000),并且发生了同样的情况。所以我想你是对的,我会试着让一台真机测试。谢谢! – Dongminator 2012-01-31 16:30:39
看来你错过了我答案的第二部分。您需要创建一个全局变量,该变量在每次运行线程时开始对millis进行计数,并且仅在运行second.setText()方法时改变视图的可见性,当累计达到3600时 – 2012-01-31 19:54:47
使用全局变量有效!谢谢!我检查SystemClock.elapsedRealtime() - global_variable> 1000,然后运行setText()代码。再次感谢!!! – Dongminator 2012-01-31 23:11:12