一、 整体框架图


1. ViewRootImpl 每个窗口都对应一个viewRoot,通过viewRoot把view 添加到WMWindowState 列表里,之后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. 下面是整套流程图,可以从整体上看出事件是如何处理和分发的。

二、整体流程图


更多相关文章

  1. android-----关于事件分发机制中几点困惑测试
  2. 【Android应用开发技术:应用组件】Android事件处理机制
  3. 从零开始学android<popupwindow弹出式窗口.三十四.>
  4. Android View事件传播机制
  5. 无法向CalendarView事件添加侦听器
  6. AutoCompleteTextView 设置了点击事件需要点击两下解决办法
  7. android 模拟键盘鼠标事件(adb shell)
  8. Android中简单活动窗口的切换--Android
  9. android-弹出窗口的使用(1)

随机推荐

  1. Android开发手记一 NDK编程实例
  2. android启动时间
  3. android耗时任务_handler
  4. Android(安卓)面试题
  5. Android(安卓)判断应用程序获取通知栏权
  6. android XMl 解析神奇xstream 五: 把复杂
  7. 欢迎访问Android中国
  8. Android监听手机软键盘的弹起和关闭
  9. Android笔记:SlidingDrawer
  10. Android 自定义ViewGroup 实战篇 -> 实现