小弟菜鸟一枚,最近在学做一个倒计时的应用(输入时间,点“开始倒计时”按钮就会开始倒计时并显示剩余时间),写出来之后在手机里运行,一按“开始倒计时”就会停止运行。
这是Handler和进行倒计时的startTime()方法。

我调试了一下,发现当运行到timer.schedule(task, 1000)的时候 i 并没有减小,跟mHandler相关的代码也没有运行。而在startTime()方法结束后 i 却减小了1。但是跟mHandler相关的代码也没有运行。之后程序就结束了。
也就是说是Handler出了问题。但是想不通到底是怎么了,希望哪位热心的大哥能指点一二。万分感谢!
------解决思路----------------------
TimerTask是一个线程吧?你好像没有调用start方法
------解决思路----------------------
schedule(TimerTask task, long delay)的注释:Schedules the specified task for execution after the specified delay。大意是在延时delay毫秒后执行task。并没有提到重复执行
schedule(TimerTask task, long delay, long period)的注释:Schedules the specified task for repeated fixed-delay execution, beginning after the specified delay。大意是在延时delay毫秒后重复的执行task,周期是period毫秒。
------解决思路----------------------
public class timerTask extends Activity {
private int recLen = 11;
private TextView txtView;
Timer timer = new Timer();
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.timertask);
txtView = (TextView) findViewById(R.id.txttime);
timer.schedule(task, 1000, 1000); // timeTask
}
final Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case 1:
txtView.setText("" + recLen);
if (recLen < 0) {
timer.cancel();
txtView.setVisibility(View.GONE);
}
}
}
};
TimerTask task = new TimerTask() {
@Override
public void run() {
recLen--;
Message message = new Message();
message.what = 1;
handler.sendMessage(message);
}
};
}
用这样的倒计时