下面和大家分享一下android中非常重要的消息处理机制,说到消息处理,Message,MessageQueue,Looper,Handler这四个类的作用是我们必须要明白的。 下面分别谈谈他们的作用: MessageQueue MessageQueue表示消息队列,存放消息的地方,按照“先进先出”的规则执行,每一个线程只可以拥有一个MessageQueue。当创建Looper对象的时候会创建一个MessageQueue对象。 Message Message表示消息对象,MessageQueue中存放的对象,一个MessageQueue中可以存放多个Message对象。通过调用Message类的obtain()方法或者调用Handler类的obtainMessage()方法获取Message对象,但是这样并不一定会创建一个新的Message对象,如果消息池中有可用的Message对象则直接取出返回这个对象,否则如果消息池中没有可用的Message对象,则会创建一个新的Message对象。当消息队列中的Message对象被系统处理完之后,该Message对象会从MessageQueue中删除,然后放入消息池中。 Looper Looper是用来操作MessageQueue的,每一个Looper对应一个MessageQueue,可以通过调用Looper.myLooper()方法获取当前线程的Looper对象,Looper循环从MessageQueue中取出Message对象,交给Handler调用handleMessage方法进行处理,处理完之后Message对象被放入消息池中。 Handler Handler是消息的处理者,Handler将需要传递的信息封装成Message对象,然后调用sendMessage方法将Message放入MessageQueue中,当MessageQueue循环到该Message时,调用相应Handler对象的handleMessage方法对其进行处理。 /developer/
注意在UI线程也就是主线程中默认会创建Looper对象和MessageQueue对象,如果在我们自己新开的线程中要进行消息处理,必须创建Looper对象和MessageQueue对象,通过调用Looper.prepare()方法可以创建Looper对象和MessageQueue对象,调用Looper.loop()方法可以启动消息循环队列。 这里 /developer/thread-25343-1-1.html还有个例子,你可以参照一下,求给分啊!!!
提速啦(www.tisula.com)是赣州王成璟网络科技有限公司旗下云服务器品牌,目前拥有在籍员工40人左右,社保在籍员工30人+,是正规的国内拥有IDC ICP ISP CDN 云牌照资质商家,2018-2021年连续4年获得CTG机房顶级金牌代理商荣誉 2021年赣州市于都县创业大赛三等奖,2020年于都电子商务示范企业,2021年于都县电子商务融合推广大使。资源优势介绍:Ceranetwo...
RepriseHosting是成立于2012年的国外主机商,提供独立服务器租用和VPS主机等产品,数据中心在美国西雅图和拉斯维加斯机房。商家提供的独立服务器以较低的价格为主,目前针对西雅图机房部分独立服务器提供的优惠仍然有效,除了价格折扣外,还免费升级内存和带宽,商家支持使用支付宝或者PayPal、信用卡等付款方式。配置一 $27.97/月CPU:Intel Xeon L5640内存:16GB(原...
hostyun新上了香港cloudie机房的香港原生IP的VPS,写的是默认接入200Mbps带宽(共享),基于KVM虚拟,纯SSD RAID10,三网直连,混合超售的CN2网络,商家对VPS的I/O有大致100MB/S的限制。由于是原生香港IP,所以这个VPS还是有一定的看头的,这里给大家弄个测评,数据仅供参考!9折优惠码:hostyun,循环优惠内存CPUSSD流量带宽价格购买1G1核10G3...