Android处理程序跳过/跳转一秒

时间:2012-01-31 14:49:49

标签: android

我正在尝试实现一个简单的数字时钟,其中第二个和两个冒号每秒都在变化。我曾考虑过使用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);

1 个答案:

答案 0 :(得分:0)

我怀疑你在模拟器上看到这个,因为它比实际手机慢得多。尝试将tick_handler.postDelayed(this, 1000);更改为小于1秒的值,例如500毫秒

tick_handler.postDelayed(this, 500); 

并添加一个全局变量来跟踪每次线程运行之间的差异,如果差异为1秒,则更新视图。