我正在尝试实现一个计时器,它在大多数情况下工作正常。 但这是第一次,时钟没有开始,但对于其余的活动,它是, 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);
}
答案 0 :(得分:1)
您在mytime.start();
创建mUpdateTimeTask
之前致电onCreate()
。因此,方法timer()
会将未初始化的mUpdateTimeTask
传递给mHandler
。
您应首先初始化,然后开始Thread
:
mUpdateTimeTask = new Runnable() {
...
};
mytime.start();