黑马程序员技术交流社区

标题: android计时器 [打印本页]

作者: 云中游    时间: 2012-8-29 19:23
标题: android计时器
请问各位大牛,在android中怎样创建个倒计时器?
作者: 郑雅杰    时间: 2012-12-9 14:28
先看段代码,这个实例化了一个Handler,Handler可以通过Message在多个线程通讯,我这里做的是定时recLen加1,然后以一定的格式,显示到recTime上(UI线程上的操作)。

final Handler handler = new Handler(){   
public void handleMessage(Message msg) {   
switch (msg.what) {   
case 1:   
recLen++;  
recTime.setText(GetRecTime(recLen));  
break;   
}   
super.handleMessage(msg);   
}   
};  
下面定实例化一个TimerTask,这个是为Timer提供一个定时执行的内容。我在这个方法中加的是给Handler一个发送消息功能,因这在Timer的线程中,无法直接操作UI线程。

TimerTask task = new TimerTask(){   
public void run() {   
Message message = new Message();   
message.what = 1;   
handler.sendMessage(message);   
}   
};  
剩下的工作就简单多,添加一个Timer,可以让程序运行起来了

timer = new Timer(true);  
timer.schedule(task,1000, 1000);   
//延时1000ms后执行,1000ms执行一次  
//timer.cancel(); //退出Android计时器
说到这里,也许有些还感觉云里雾里,好久没写东西,也不知道怎么把问题说的更明白,这个再贴上我开始的错误写法,对比错误写法,也许能让大家更快的明白过来

Android计时器错误写法

TimerTask task = new TimerTask(){   
public void run() {   
recLen++;  
recTime.setText(GetRecTime(recLen));  
//直接在TimerTask中操作UI线程,单步调试的时候发现,程序根本就没执行到这里  
}   
};   
timer = new Timer(true);  
timer.schedule(task,1000, 1000);  




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2