Hanlder Looper MessageQueue Message

本文详细介绍了Android中的消息机制,包括Handler、Message、MessageQueue及Looper的工作原理。解释了如何通过Handler发送消息,Looper如何管理MessageQueue,并阐述了消息在各个组件间的传递过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Handler:处理消息

Message:消息

MessageQueue:消息队列

Looper:MessageQueue的管理者

 

MessageQueue:

  消息队列。以先进先出的原则存放多个Message.MessageQueue是通过Handler进行管理,通过Looper.Prepare()创建Looper的同时会自动创建MessageQueue对象.UI主线程默认会创建Looper,其他线程需要手动创建.通过Looper. Prepare()和Looper. Looper.loop(),对MessageQueue进行循环处理。

 

Message:

  消息对象。new Message().obtain()得到Message,如果Message Pool中已经有Message对象则总Pool获取,没有则创建一个新的Message对象。也可以同过new Message()创建一个新的对象。

 

Looper:

  Looper是MessageQueue的管理者,创建Looper对象就会创建MessageQueue,MessageQueu脱离不了Looper.除了UI主线程会创建一个默认的Looper,其他线程都要通过Looper.prepare()方法创建。Looper遵循先进先出的原则,循环从MessageQueue中读取Message。

  Looper从MessageQueue中取出消息后交给Handler().handleMessage(msg)处理,处理完成调用Message().recycle() 放入到Message Pool中.

 

Handler:

  负责处理消息。Handler将消息封装成Message,通过new Message().obtainMessage()创建一个Message,也可以通过Message message = new Message()创建消息。Handler().obtainMessage()方法如果Message Pool中已经有Message对象,则直接调用该对象,不用每次创建一个对象

。将消息传递给Looper,调用Handler().sendMessage(msg)时,Looper将Message加入到MessageQueue.继而Looper通过广播的形式将消息发送出去,Hanlder通过Handler().obtainMessage()方法接受到消息,做相应处理.

转载于:https://www.cnblogs.com/webview/p/4226687.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值