InputManagerService的主要用来分发键盘消息和接收键盘消息。如下图,IMS的启动过程如下,在Java层进行了初始化,然后调用到了C++层初始化了一个EventHub对象,这个对象是真正执行监控键盘操作的。进而以EventHub对象为参数初始化了InputManager,在InputManger中初始化了一个读取消息的线程,一个分发消息的线程。初始化完成之后,开始启动IMS,进入到C++层,分别执行读取消息线程和分发消息线程这两个线程。读取线程在没有键盘消息的时候,会处于阻塞状态,通过EventHub来获取键盘消息(监控指定输入设备文件符),当有键盘消息的时候,读取消息线程就会被唤醒。然后读取键盘消息线程就写入键盘消息内容,管道的写端有内容写入了,管道的读端所在的线程就会被唤醒。因此分发消息线程就开始工作了。
IMS的启动为键盘消息发送提供基础
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 了解更多,移步Android触摸事件传递机制系列详解 1 概述 当用户触摸屏幕或者按键操作,首次触发的是硬件驱动,...