显而易见这里最值得存眷的就是InputManager的start()办法了,可惜这个办法并不值得我们如斯关怀,因为它做的工作很简单,就是启动InputDispatcherThread和InputReaderThread开端监听。
- status_t InputManager::start() {
- status_t result = mDispatcherThread->run("InputDispatcher", PRIORITY_URGENT_DISPLAY); if (result) {
- ALOGE("Could not start InputDispatcher thread due to error %d.", result); return result;
- }
- result = mReaderThread->run("InputReader", PRIORITY_URGENT_DISPLAY); if (result) {
- ALOGE("Could not start InputReader thread due to error %d.", result);
- mDispatcherThread->requestExit(); return result;
- } return OK;
- }
那么InputReaderThread线程是怎么和EventHub接洽关系起来的呢?
51CTO诚邀您9月23号和秒拍/国美/美团元专家一路聊智能CDN的优化之路,抓紧时光哦!
对于InputReadThread:
- 启动后轮回履行mReader->loopOnce()
- loopOnce()中会调用mEventHub->getEvents攫取事宜
- 读到了事宜就会调用processEventsLocked处理事宜
- 处理完成后调用getInputDevicesLocked获取输入设备信息
- 调用mPolicy->notifyInputDevicesChanged函数应用InputManagerService的代劳经由过程Handler发送MSG_DELIVER_INPUT_DEVICES_CHANGED消息,通知输入设备产生了变更
- 最后调用mQueuedListener->flush(),将事宜队列中的所有事宜交给在InputReader中注册过的InputDispatcher
至此,Input体系有关事宜输入模块的进修就停止了,在后续的文┞仿中会持续进修Input体系的事宜归类、分发流程,感兴趣的同伙可以留心存眷。
【编辑推荐】
- 在体系安然方面,Android 8.0 做出了一些重要改变
- 8种办法让Android成为强大年夜的临盆力对象
- 49个你应当懂得的Android Studio技能、插件与资本
- 为什么要开辟Android库?
- Android ADB开宣布用敕令总结
推荐阅读
51CTO诚邀您9月23号和秒拍/国美/美团元专家一路聊智能CDN的优化之路,抓紧时光哦! 以前几个月,安然界见证了多起重大年夜云数据泄漏事宜。6月份1.97亿美国选平易近的泄漏事宜,震动全球。>>>详细阅读
本文标题:Android Input子系统:Input进程的创建,监听线程的启动
地址:http://www.17bianji.com/lsqh/37309.html
1/2 1