Android系统--输入系统(十七)Dispatcher线程_分发dispatch
来源:互联网 发布:g900 支持 mac 编辑:程序博客网 时间:2024/04/29 21:58
Android系统--输入系统(十七)Dispatcher线程_分发dispatch
1. 回顾
InputRead线程从输入设备当中得到输入事件
对于读到输入事件稍作处理,比如紧急事件,来电时候按下音量键便是静音,这时候是直接处理的,处理之后再把输入事件放入mInBoundQueue队列当中,接着唤醒Dispatch线程。
对于Dispatch线程也是对输入事件稍作处理之后,再给分发给应用程序
- Global Key/System Key:处理之后直接丢掉
- User Key:上传给应用程序:通过查找目标APP得到对应connection,再把输入事件放入某个outBoundQueue队列中,应用程序将其取出处理。
2. 分发dispatch事件概述
在上一篇博文分析到在Dispatch线程当中有一个Vector容器(mConnectionByFd),里面有多个connection,这些connection对应着一个个应用程序connection含有InputChannel(含有fd),应用程序也含有对应fd,fd通过socketpair机制得到。Dispatch线程找到对应的connection之后,便可以将输入事件写入InputChannel中的fd中,应用程序通过socketpair机制马上便可以获得fd。
3. 分发Dispatch过程
查找目标
- 向WindowManagerService查询当前窗口
- 获得对应的connection
把输入事件放入connection某个队列outBoundQueue中
从队列中取出,构造为InputMessage类型,逐个将输入事件写入fd中
4. 分发事件具体调用时序图
阅读全文
0 0
- Android系统--输入系统(十七)Dispatcher线程_分发dispatch
- Android系统--输入系统(十七)Dispatcher线程_分发dispatch
- Android系统--输入系统(十四)Dispatcher线程情景分析_dispatch前处理
- shell脚本_【分发系统】
- Android输入系统之如何进行Dispatche分发
- Android系统--输入系统(十五)实战_使用GlobalKey一键启动程序
- android事件分发机制dispatch
- Android系统ViewGroup事件分发
- 黑马程序员_学习日记十七_交通灯管理系统
- 系统提供的dispatch方法(刚刚)
- Android触摸屏输入系统
- Android触摸屏输入系统
- Android 输入系统
- Android触摸屏输入系统
- Android触摸屏输入系统
- Android触摸屏输入系统
- Android 输入系统
- Android输入系统
- 自建ss服务器教程
- 关于msi格式的程序包的安装
- yum升级subversion1.6.11到subversion1.8
- 线程间操作无效: 从不是创建控件“ProgressBar1”的线程访问它。
- js的touch事件
- Android系统--输入系统(十七)Dispatcher线程_分发dispatch
- Cartographer 参数调试
- FPGA时钟
- UVA
- lua教程二
- Fragment的增删改以及显示、隐藏操作
- ROS语音学习
- java开发一个一GMT(格林威治标准时间)来显示当前时间的程序
- Unity和android的交互流程