Android基础架构:Native层 Looper、Handler、Message 研究1,参考:
https://www.cnblogs.com/roger-yu/p/15099541.html
Android Native -- Message/Handler/Looper机制(原理篇)2,代码:
system/core/libutils/include/utils/Looper.h
system/core/libutils/Looper.cpp3,涉及到的Linux基础,系统调用API:
eventfd
epoll // epoll事件轮询机制应用很广泛,比如Android的input模块也是基于此,很多架构基于此。
pthread4,中英文对照:
poll: 轮询
epoll: 全称 event poll 事件轮询
looper: 循环器
loop: 环形,循环,环路
handler: 处理程序,处理器,处理者
message: 消息5,Looper、Handler、Message
linux的epoll已经提供了事件轮询机制,仅仅只是事件轮询机制,具体轮询什么事件内容,
需要程序员自己定义。
Looper就是基于epoll,指定了要轮询内容为Message消息,并且通过控制反转,
把Message消息的处理也交给发送Message消息的客户端处理。
所以,Looper 也称为 消息循环器 或 消息循环机。6,架构模型
控制器 + 处理器 + 内容容器 + 内容的增删改查算法 模型
或
逻辑控制器 + 业务处理器 + 内容容器 + 内容的增删改查算法 模型控制器:
Looper是Message消息循环控制器,以时间排序轮询Message消息。
处理器:
Handler是处理器,处理的内容是Message消息,也称为 Message消息处理器。
内容容器:
Message是消息,内容容器
算法:内容的增删改查算法7,Looper、Handler、Message运行机制
Handler处理器--投递Message消息->控制器-轮询Message消息->找到当前时间要处理的Message消息
->Handler处理器处理Message消息。
简化:
Handler业务处理器-Message消息->Looper消息循环控制器-控制反转->Handler业务处理器处理Message消息8、Looper不仅可以轮询Message,也支持addFd,轮询fd,并回调
C++层使用Looper的demo:
sendMessage()方式:如SurfaceFlinger中的demo 在 frameworks/native/services/surfaceflinger目录
addFd()方式: 如input模块的demo 在frameworks/native/services/inputflinger目录通过grep -r -E "sendMessage|addFd" --include *.cpp --include *.h --color

Android基础架构:Native层 Looper、Handler、Message 研究相关推荐

  1. Android --- IjkPlayer 阅读native层源码之解码成功后的音频数据如何发送回Android播放(九)

    整章目录:Android------- IjkPlayer 源码学习目录 本篇会有很多源代码,请注意阅读每行代码上面的注释. 本篇介绍的主要内容为上图红框圈起部分: 在前面介绍了如何将一个AvPack ...

  2. Android ---- Ijkplayer阅读native层源码之IjkMediaPlayer_prepareAsync(五)

    整章目录:Android------- IjkPlayer 源码学习目录 本篇会有很多源代码,请注意阅读每行代码上面的注释. 本篇介绍的主要内容为上图红框圈起部分: IjkMediaPlayer_pr ...

  3. Android -- 消息处理机制源码分析(Looper,Handler,Message)

    android的消息处理有三个核心类:Looper,Handler和Message.其实还有一个Message Queue(消息队列),但是MQ被封装到Looper里面了,我们不会直接与MQ打交道,因 ...

  4. android的消息处理机制(图+源码分析)——Looper,Handler,Message

    android源码中包含了大量的设计模式,除此以外,android sdk还精心为我们设计了各种helper类,对于和我一样渴望水平得到进阶的人来说,都太值得一读了.这不,前几天为了了解android ...

  5. 【转】android的消息处理机制(图+源码分析)——Looper,Handler,Message

    原文地址:http://www.cnblogs.com/codingmyworld/archive/2011/09/12/2174255.html#!comments 作为一个大三的预备程序员,我学习 ...

  6. android的消息处理机制(图文+源码分析)—Looper/Handler/Message[转]

    from:http://www.jb51.net/article/33514.htm 作为一个大三的预备程序员,我学习android的一大乐趣是可以通过源码学习google大牛们的设计思想.andro ...

  7. java jni 数据类型_【Android JNI】Native层解析Java复杂数据类型HashMap

    前提 Java HashMap 是基于哈希表的 Map 接口的实现.此实现提供所有可选的映射操作,并允许使用null值和null键.HashMap是存放引用类型数据的容器,只能存放引用数据类型,不能存 ...

  8. android 动态库获取路径问题,一种Android App在Native层动态加载so库的方案

    这篇文章通过实战案例,介绍了一种有条理的组织Native层代码层级结构的方法.并且,在良好的代码层级.作用分工的基础上,实现了动态的按需加载.卸载so库.文章的最后,还介绍了实践过程中遇到的困难以及对 ...

  9. Android基础架构

    引言 我们对android有了个大致的了解,知道如何搭建android的环境及简单地写一个HelloWorld程序,而且知道一个android项目包括哪些文件夹和文件及相应的作用.本篇将站在顶级的高度 ...

最新文章

  1. 利用查找替换批处理(附完整源码),进行高效重构
  2. linux命令行中ftp的简单使用
  3. python读文件代码-简单了解Python读取大文件代码实例
  4. This Jenkins instance appears to be offline
  5. 那些年,我在西安的“遇见”(一)
  6. Spring-Spring整合MyBatis详解
  7. python纵向制表符命令_Python中raw_input()中子命令的制表符完成
  8. android自定义横向时间轴,Android自定义时间轴的实现过程
  9. Python已知经纬度求两点距离
  10. 软件推荐┊最有效防止被聚生网管、P2P终结者等管理软件控制的小工具——ARP防火墙单机版...
  11. IEEE会议文章接收后提交流程
  12. NCURSES程序设计之拼图游戏
  13. mysql数据库没有导出权限_mysql导出没有数据库
  14. 文档服务器 件排名,服务器十大品牌排名
  15. JSP汽车故障诊断系统myeclipse开发mysql数据库web结构java编程
  16. 开源框架面试之MyBatis面试题
  17. chromium 43 如何增加后台运行的插件 关闭浏览器到系统托盘
  18. android APP开发时,全屏手机适配的问题解决
  19. Jmeter断言-响应断言
  20. 什么样的学生最坑导师?

热门文章

  1. 拍拍抢拍精灵V2.1正式版--腾讯拍拍秒杀器
  2. IMPL2. get_cells/get_pins等获取对象常用命令解析
  3. 102-gold入门
  4. 基于Bootstrap的超酷jQuery开关按钮插件
  5. 全网19套超热门表情包,小狗头、国王排名等我全部整理来了
  6. iOS如何处理zip文件,解压或者压缩?
  7. py系统学习笔记:第七阶段:网页编程基础:第二章:CSS3:23.文本、表格属性
  8. eclipse oxygen java7,Eclipse Oxygen 如何正确配置Java 9 SDK
  9. NtripShare EdgeEngine GNSS边缘解算盒子/模块/软件用户手册
  10. 更改电脑IE收藏夹路径