Skip to content
阅读进度

如何理解一次触摸从硬件到 View 经过哪些环节? ​

返回 View 与显示链路 目录

标准回答 ​

触摸硬件通过驱动产生输入事件,EventHub 读取 Linux 输入设备事件,InputReader 解析设备数据、坐标和 Display 映射,InputDispatcher 再依据窗口状态选择目标,并通过 InputChannel 等通道交给应用。应用的 ViewRootImpl 输入管线处理事件,进入窗口与 Activity 的分发,再由 DecorView 和 ViewGroup 分发到具体 View。完整链路还包含系统策略处理、输入法和事件完成反馈。因此触摸无响应时,要分别判断硬件事件有没有产生、系统选中了谁、应用是否及时消费,而不是只检查 onTouchEvent。

延伸追问 ​

InputChannel 不等于每个 MotionEvent 都要经一次普通 Java AIDL 调用;输入传输有专门通道。

内容来源 ​

用完整回答理解机制,用真实证据解释项目。