Android系统输入事件Read过程

输入事件主要业务逻辑在native层,这一层主要是NativeInputManager进行管理,这也是入口。

NativeInputManager
- mInputManager:sp

主要管理的是InputManager对象,它的职能是创建一些核心对象。

InputDispatcher
InputDispatcherThread
InputReader
InputReaderThread

其中InputDispatcherThread与InputReaderThread只是两个循环,主要的逻辑靠InputDispatcher与InputReader实现。

其中InputReader主要是进行读取事件

mEventHub:EventHub
mDevices:InputDecvice

在InputReader中EventHub用于管理设备,mDevices对应的是EventHub的设备,这样做的目的是分层,在InputReader这一层主要是进行对设备添加删除和上报过来的事件对应进行处理,所以核心并不是关心这个设备和驱动进行打交道的过程,比如对应那些kcl等。

EventHub主要和Devices打交道,它里面保存着真正的Devices节点。

Devices
fd
KeyMap

其中fd主要是读取设备节点的文件句柄,KeyMap对应的是kcl与kcm的映射关系,这些主要是对底层上报上来的事件进行映射转化成Android的code。

对于kcl与kml对应的是两张表,Android从驱动传递的code值是需要转化成Android系统识别的,为什么要这样做呢?假如我们需要更新设备,我们按键部署不一致,我们只需要更新这个表即可,这样就做到了解耦目的。

你可能感兴趣的:(Android系统输入事件Read过程)