今天就跟大家聊聊有关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计时器如何使用有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。