Android 事件输入系统整体框架

来源:互联网 发布:java分布式系统架构图 编辑:程序博客网 时间:2024/05/18 09:17

一、 整体框架图


1.  ViewRootImpl 每个窗口都对应一个viewRoot,通过viewRoot把view 添加到WM WindowState 列表里,之后WM就可以维护每个窗口的状态。

     native层上报的事件消息和刷屏会先到达ViewRoot。对于刷屏事件,ViewRoot 会对view执行layout和measure动作。对于key或者触屏事件,ViewRoot 会根据当前状态进程分发,可能发给view,也可能发给输入法等。

2. WM  管理窗口,为每个View 注册事件输入通道

3. InputManagerService 和 nativeInputManager 提供接口注册事件通过,提供接口拦截事件,ANR通知等。

4. InputEventReceiver 和 NativeInputEventReceiver  事件接收器,每个窗口对应一个。

5. InputDispatcher 事件分发器,从InputReader 接收事件,如果有WM拦截了事件则不再发给应用,否则通过channal发给当前获得焦点的窗口应用处理。

6. InputReader  通过EventHub读取事件,比发给InputDispatcher。

7. EventHub  根据不同的输入设备加载不同的配置,提供接口从事件设备节点读取事件,并调用Input Lib库对事件解析。

8. Input Libs 事件解析库,并把kernel 层的事件 keycode 转换成android层的事件 keycode。

9. 下面是整套流程图,可以从整体上看出事件是如何处理和分发的。

二、整体流程图


0 0
原创粉丝点击