摘要:学习了下android的屏幕点击原理,(并不是应用层的事件分发)流程很复杂,简单的梳理了一下,日后再做详细研究

系统启动后,会有个WindowManagerSeverice(WMS),WindowManagerSeverice通过IWindow(aidl)跟视图中的viewRoot(后期ViewRootImpl) 关联。

  • 当用户点击屏幕后WMS 接受到屏幕发来的消息(通过Binder)
  • WMS找到屏幕顶端进程的IWindow并调用dispatchKey方法
  • IWindow 可以找到持有他Bn端的viewRoot
  • viewRoot在根据坐标 找到内部的view 进行事件处理