Android中Handler机制详解1----原理

1、handler是什么?
handler是Android给我们用来更新ui的一套机制,也是一套消息处理机制,
我们可以发消息,也可以通过它处理消息。
activity的生命周期的方法也是通过handler来回调的。

2、不用handler机制可以吗?
不行,Android在设计的时候,就封装了一套消息创建,传递,处理机制,如果不遵循
这样的机制,就没办法更新ui信息,就会抛出异常。
不用,就要自己写一套消息处理机制,较为复杂。

3、Android为什么要设计只能通过Handler机制跟新UI呢?
最根本的目的就是解决线程并发问题,
假设如果在一个Activity中,有多个线程去更新ui,并且没有加锁机制,
那么会产生什么问题呢?
更新界面错乱
如果对更新UI的操作都进行枷锁处理又会产生什么问题?
性能下降
所以我们遵循handler机制就可以了

4、handler的原理是什么?
一、handler封装了消息的发送(主要包括消息发送给谁)
Looper
1)内部包含了一个消息队列也就是MessageQueue,所有handler发送的
消息都是走向这个消息队列
2)Looper.Looper方法,就是一个死循环,不断的从MessageQueue里面
取消息,如果有消息就处理消息,没有消息就阻塞。

二、MessageQueue就是一个消息队列,可以添加消息,并处理消息

三、handler内部跟Looper进行关联,也就是说在Handler内部可以找到Looper,
找到了Looper也就找到了MessageQueue,在handler中发送消息,其实就是向
MessageQueue队列中发送消息。

总结一下就是:
handler负责发送消息,
Looper负责接收handler发送的消息,直接把消息回传给handler自己。
MessageQueue就是一个存储消息的容器

我自己的理解是
handler------MessageQueue-----Looper-----回传给handler
handler发消息到MessageQueue
Looper从MessageQueue拿到消息,并回传给handler

关于Looper循环参考
https://blog.csdn.net/lyz_zyx/article/details/80543787
参考视频:
https://www.imooc.com/learn/267
源码下载:
https://download.csdn.net/download/zhaihaohao1/10650382

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值