您的位置:首页 > 移动开发 > Android开发

android 线程消息处理【之消息处理中再处理的个人学习小思考】

2014-10-24 11:10 387 查看
android 工程中只有两类线程:ui线程和非ui线程。

ui线程是用来处理ui界面更新,非ui线程是用来处理一些耗时的服务,因为ui线程如果界面卡死20s,会报anr错误。当然这一切,目的这是要把这线程的分类概念让开发者彻底接受,并理解。

那么ui线程,和非ui线程,必然存在通信,非ui执行出结果,再消息推送致ui线程,ui线程处理接收到的结果,有可能更新ui。

这种消息机制的传递就是:handler+looper

handler 用来处理,looper用来存消息,它有消息队列。 一个线程都允许有且只有一个looper,一个handler【所以也可以没有】,至于handler是哪个线程的,它所依赖的looper决定。若构造函数无参,则依赖当前线程。自己线程的handler处理自己线程的消息队列中的消息。

message 是消息,它是一个结构体数据,它有what,when,arg1,arg2,obj 等属性。他的构造函数是无参的【new Message()】,但是通常情况下用handler.obtainMessage()。为什么呢?看源码:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: