Message 消息处理详解

MessageQueue:
消息队列,存放消息的地方,按照先进先出FIFO规则执行,每一个线程只可以拥有一个MessageQueue。在创建Looper对象会创建一个MessageQueue对象。

Message:
消息对象,MessageQueue中存放的对象。一个MessageQueue中可以包含多个Message对象。可以通过Message.obtain()或者Handler.obtainMessage()获取Message对象。但是这并不一定是直接创建一个新的实例,而是先从消息池中看有没有可用的Message实例,存在则直接取出返回这个实例。如果消息池中没有可用的Message实例,则才用给定的参数创建一个Message对象。调用removeMessages()时,将Message从MessageQueue中删除,同时放入到消息池中。

Looper:
操作MessageQueue。一个Looper对应一个MessageQueue。通过调用Looper.myLooper()可以获得当前线程的Looper对象。Looper从MessageQueue中取出Message然后,交由Handler的handleMessage()进行处理。处理完成后,调用Message.recycle()将其放入消息池中。

Handler:
消息的处理者。handler负责将需要传递的信息封装成 Message对象,然后调用sendMessage()方法将消息放入MessageQueue中。当MessageQueue循环到该Message,调用相应的handler对象的handleMessage()方法对其进行处理。Handler都可以共享同一Looper和MessageQueue。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值