解析Handler异步消息处理!

本文详细解析了Android中Handler的异步消息处理机制,包括Message、Handler、MessageQueue和Looper的角色与作用。强调了主线程不会因Looper.loop()的死循环卡死的原因,解释了HandlerThread的使用场景和优势,以及线程间如何通过Handler进行通信。
摘要由CSDN通过智能技术生成

Handler中异步消息处理一般由四个部分组成,Message、Handler、MessageQueue和Looper。

1、Message :是在线程之间传递消息,它可以携带信息,用于不同线程之间交互数据。它里面字段有
waht、arg1、arg2(int类型)、object型数据。

2、Handler: 它主要用于发送消息和处理消息,发送消息一般是使用Handler的sendMessage()方法,
发出消息之后,辗转处理后,最终会传递到handlerMessage()中

3、MessageQueue:消息队列,它主要存放handler发送的消息。这部分消息会一直存放在队列中,等待
被处理。每个线程中只有一个MessageQueue队列。

4、Looper:是MessageQueue队列的管家,调用loop()方法后,就会进入到一个无线循环当中,然后每当
发现队列中有消息,就会取出,并传递到Handler的handlerMessage方法中()。

了解了上面的几个的基本概念之后,我们再把异步消息处理的流程梳理一遍,首先需要在主线程中创建一个Handler对象,并重写handlerMessage()方法。然后当子线程中更新UI的时候,我们先创建一个Message对象,并通过Handler发送出去。之后这条消息会被添加到MessageQueue队列中等待被处理,而Looper一直尝试从队列中取消息,最后分发到handlerMessage()方法中。由于Handler是在主线程创建的,所以handlerMessage()方法会在主线程中运行,于是我们就可以更新UI了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值