A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 云中游 初级黑马   /  2012-8-29 19:23  /  1982 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

请问各位大牛,在android中怎样创建个倒计时器?

1 个回复

倒序浏览
先看段代码,这个实例化了一个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);  
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马