Android消息处理机制 -- native Handler -- Android Oreo

为什么使用handler?
1、从UI的层面来看:
屏幕的刷新频率是60HZ,约16ms 一次。为了保证UI的流畅性,不阻塞,需要耗时的操作异步执行,然后通过handler异步更新UI主线程。
2、Android中的UI控件不是线程安全的,因此在多线程并发访问UI的时候会导致UI控件处于不可预期的状态。Google 不通过锁的机制 来处理这个问题是因为: 引入锁会导致UI的操作变得复杂 ,导致UI的运行效率降低
因此,Google的工程师最后是通过 单线程的模型来操作UI ,开发者只需要通过Handler在不同线程之间切花就可以了。

概述Android的消息机制?(java的实现机制)
Android的消息机制就是Handler的运行机制。主线程和子线程之间的切换是其中一种特殊运用,哪里都有它的身影。了解Handler消息传递机制,同时需要了解MessageQueue、Looper、Handler。
整个消息机制的流程:
创建消息队列-->进入消息循环(有消息则处理,没有则进入睡眠等待状态)-->发送/处理消息
MessageQueue:描述消息队列。
Looper:创建消息队列,进入消息循环。
Handler:发送,处理消息。
消息循环中,起关键作用的是一个pipe 。在Looper对象创建的过程中,会在内部创建一个pipe。Looper中保存pipe的读端文件描述符(read Fd)和写端文件描述符(write Fd)。当其他线程向这个线程的消息队列发送消息后,其他线程会通过这个pipe的read Fd写入一个数据,从而唤醒线程,然后处理消息。linux epoll机制可以监听IO的读写事件。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值