Handler工作原理

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处理消息,切换到主线程。这个过程就是主线程的消息循环模型。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

路漫-其修远兮

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

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

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

打赏作者

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

抵扣说明:

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

余额充值