Handler工作原理

本文深入解析Android中Handler的工作原理,包括消息队列MessageQueue、消息循环Looper和消息载体Message的作用及交互过程。同时,详细阐述主线程如何通过Looper创建消息循环,以及四大组件启动和停止的过程如何与消息循环模型相结合。

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

1.Handler工作原理

Android的消息机制,主要是值Handler的运行机制,而Handler的运行依赖MessageQueue和Loop的支撑。
MessageQueue是消息队列,用来存储一组消息,以队列的形式对外提供插入和删除工作,内部结构通过单链表实现。

Looper消息循环,以无限循环的形式查询是否是否有新消息,如果有就处理新消息,否则就一会等待。

Message消息载体

Handler创建时会使用当前线程的Looper构建内部的消息循环,主线程自动创建了Looper,通过Handler的send方法发送一个Message消息,send方法会调用MessageQueue的enqueueMessage把这个消息添加到消息丢了中,然后Looper发现新消息到来就会处理这个消息,最终Runnable或者handleMessage方法会被调用,handler中的业务就被切换到创建Handler的线程中执行了。

2.主线程的消息循环

Android 的主线程是ActivityThread 主线程入口方法为main,在main方法中系统会通过Looper.prepareMainLooper创建主线程的Looper以及MessageQueue,并通过Looper.loop开启主线程的消息循环,在ActivityThread的内部有一个Handler H,它内部定义了一组消息类型,主要包含四大组件的启动和停止过程。

ActivityThread通过ApplicationThread 和AMS进行进程间通讯,AMS以进程间通讯的方式完成AcitivityThread的请求后会回调ApplicationThread中的Binder方法,然后ApplicationThread会向H发送消息,H收到消息,调用ActivityThread处理消息,切换到主线程。这个过程就是主线程的消息循环模型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

路漫-其修远兮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值