Handler异步消息处理机制浅析

在Android当中的异步消息处理主要由Message、Handler、MessageQueue以及Looper组成。

1.Message

Message,消息,是在线程之间传递的消息,内部可以携带部分信息,用于不同线程之间进行数据的交换。常用的字段有,what字段,整型数据,通常用于判断接收到的消息来源于那个Handler;arg1和arg2字段,携带要处理的整型数据;obj字段,携带一个Object对象。

2.Handler

Handler,处理者,主要用于消息的发送和处理。Handler中的sendMessage()方法用来发送消息(Message),handleMessage()方法用于处理消息。

3.MessageQueue

MessageQueue,消息队列,用来存放通过Handler发送的消息。这些消息会一直存在在消息队列当中,等待处理。注:每一个线程只会有一个MessageQueue对象

4.Looper

Looper,用来管理MessageQueue,相当于一个管家。当调用Looper中的loop()方法后,就进入一个无限循环当中,当消息队列中有存在消息,就将其取出,并传递到Handler的handleMessage()方法中。注:每一个线程同样也只会有一个Looper对象

了解的以上这些概念之后,我们来梳理一遍异步消息处理的整个流程:

1.在主线程中创建一个Handler对象,并重写handleMessage()方法;

2.当子线程中需要对UI进行操作时,就创建一个Message对象,然后通过Handler的sendMessage()方法将这条消息发送出去;

3.这条消息会被添加到MessageQueue队列中等待处理;

4.Looper会一直尝试从MessageQueue中取出等待处理的消息,然后发送给Handler的handleMessage()方法中。

5.在handleMessage()方法中对消息进行处理。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值