Handler消息处理机制

说到Handler就会被问到Handler、Message、Looper之间的关系了。那么Handler为什么要出现呢,它的作用是什么?

1.Handler的作用

Android是单线程模型的操作系统。为了避免多线程更新UI出现混乱,出现线程不安全,在Android中只能使用主线程(UI线程)更新UI,那么子线程和UI线程之间的通信怎么通信呢?Handler就是为了解决这个问题的。

2.Handler、Message、Looper之间的关系

Handler:消息处理者负责发送消息和消息内容的处理。sendMessage和handleMessage方法
Message:消息对象,信息的携带者。
Looper:它是消息的载体,Looper.loop()是一个死循环,会不断的从消息队列中取出消息。如果有消息就会处理,否则会阻塞。
MessageQueue:用来存放Handler发送的消息的消息队列(双向链表结构)。

从源码的角度来说,我们通过Handler发送Message到MessageQueue,MessageQueue调用enqueueMessage方法向消息队列中插入一条消息。Looper会不停的轮询Message,它是一个阻塞式死循环,当发现有消息的时候,会调用dispatchMessage方法分发给Handler,Handler通过handlerMessage进行处理这些消息。

源码就不分析了可以参考郭霖大神鸿洋大神的博客

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值