重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇“Android中的Timer计时器怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Android中的Timer计时器怎么使用”文章吧。
目前成都创新互联已为上千余家的企业提供了网站建设、域名、雅安服务器托管、网站运营、企业网站设计、东阳网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。Android考虑到线程安全问题,不允许在线程中执行UI线程,在Android中,有一个很有意思的类:android.os.Handler,这个可以实现各处线程间的消息传递。先看段代码,这个实例化了一个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(); //退出计时器
说到这里,也许有些还感觉云里雾里,笔者好久没写东西,也不知道怎么把问题说的更明白,这个再贴上笔者开始的错误写法,对比错误写法,也许能让大家更快的明白过来。
TimerTask task = new TimerTask(){ public void run() { recLen++; recTime.setText(GetRecTime(recLen));//直接在TimerTask中操作UI线程,单步调试的时候发现,程序根本就没执行到这里 } }; timer = new Timer(true); timer.schedule(task,1000, 1000);
以上就是关于“Android中的Timer计时器怎么使用”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注创新互联行业资讯频道。