Android 性能优化(二)Handler运行机制原理,源码分析

Handler机制

Handler机制几乎贯穿了整个应用从启动到结束,包括Throwable抛出异常、View绘制、事件分发、Activity启动、Activity生命周期等都涉及到Handler机制。

我们知道,主线程中不建议耗时操作,子线程中不允许更新UI,会可能导致ANR。所以,我们需要,能在子线程中做完耗时操作,然后去到主线程更新UI的办法。消息机制,即消息的发送、入队、出队、分发过程。

Android 消息机制涉及了四个部分:

  • Handler: 消息的发送者和处理着
  • Message: 消息的载体
  • MessageQueue: 消息队列
  • Looper: 消息循环体

消息机制流程如下:

  • 主线程通过prepare创建一个Looper对象,且规定只允许关联一个Looper。
  • MessageQueue是依赖Looper一起创建的。Thread = Looper = MessageQueue。
  • 调用Looper.loop()方法,进行消息循环获取MessageQueue中的Message对象,如果消息为空就会进行线程阻塞。
  • 创建Handler对象后,自动绑定Looper对象和MessageQueue队列。
  • 然后调用与Message绑定的Handler对象的dispatchMessage方法实现接口回调,从而更新handle所在的主线程的UI。

Looper轮询器

public static final void main(String[] args) {
     //1、调用prepare()方法创建Looper对象并把该对象setMainLooper()绑定到当前线程中
        Looper.prepareMainLooper();
        ...
     //2、主线程中调用Looper.loop(),开始轮询,取消息
        Looper.loop
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

艾阳Blog

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

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

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

打赏作者

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

抵扣说明:

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

余额充值