第一次没有实现定时器

时间:2011-09-14 16:31:45

标签: android

我正在尝试实现一个计时器,它在大多数情况下工作正常。 但这是第一次,时钟没有开始,但对于其余的活动,它是, oncreate方法有一些我无法弄清楚的问题......帮助!

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.friends);
    Splash.one_time = false;
    initilize(); 
    mytime = new Thread() {
        public void run() {
            timer();
        }
    };
    mytime.start();
    mUpdateTimeTask = new Runnable() {
        public void run() {
            if (count_down > 0) {
                if (count_down <= 5)
                    clock.setTextColor(Color.RED);
                else
                    clock.setTextColor(Color.GREEN);
                clock.setText(String.format("%d", count_down--));
                mHandler.postDelayed(this, 1000);
            } else {
                clock.setTextColor(Color.RED);
                clock.setText("0");
                timeout();
            }
        }
    };
}

private void timer() {
    mStartTime = System.currentTimeMillis();
    mHandler.removeCallbacks(mUpdateTimeTask);
    mHandler.postDelayed(mUpdateTimeTask, 0);
}

1 个答案:

答案 0 :(得分:1)

您在mytime.start();创建mUpdateTimeTask之前致电onCreate()。因此,方法timer()会将未初始化的mUpdateTimeTask传递给mHandler

您应首先初始化,然后开始Thread

mUpdateTimeTask = new Runnable() {
   ...
};

mytime.start();