深入理解Android Handler 消息机制

消息驱动机制---Handler,MessageQueue,Looper

简单的说,Android消息驱动流程是Looper循环驱动MessageQueue,Handler则是用来收发消息。

Looper是在线程里面创建的,Android有UI线程,和非UI线程之分。首先我们看一下非UI线程创建Hander发生了什么。

主线程默认已经创建Looper。对于子线程则需要先创建Looper。

Looper.perpare() 创建Looper;并创建该Looper需要的MessageQueue和绑定的当前Thread的线程。一个Looper就必须有一个MessageQueue和Thread线程。


在线程的Run方法中创建Looper

adddd

aqqq

最终创建MessageQueue,并用当前线程绑定Looper

aqqq


然后Looper.loop() 启动Looper。便可以看到,死循环在一直读取MessgeQueue的对象,然后交给handler来处理

alll


那么在主线程中Handler handler = new Handler();发生了什么事情

df

主线程是默认是有Looper对象的,Looper.mylooper方法来得到主线程的Looper对象,拿到其Messagequeue后,Handler便可以处理CallBack回调,发送和处理Message了。

不管是主线程和子线程,都要先创建Looper对象,并绑定线程创建Messagequeue,然后hanler用binder机制对message进行处理。






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值