作家
登录

Android Input子系统:Input进程的创建,监听线程的启动

作者: 来源: 2017-09-12 08:47:44 阅读 我要评论

  • 显而易见这里最值得存眷的就是InputManager的start()办法了,可惜这个办法并不值得我们如斯关怀,因为它做的工作很简单,就是启动InputDispatcherThread和InputReaderThread开端监听。

    1. status_t InputManager::start() { 
    2.     status_t result = mDispatcherThread->run("InputDispatcher", PRIORITY_URGENT_DISPLAY);    if (result) { 
    3.         ALOGE("Could not start InputDispatcher thread due to error %d.", result);        return result; 
    4.     } 
    5.  
    6.     result = mReaderThread->run("InputReader", PRIORITY_URGENT_DISPLAY);    if (result) { 
    7.         ALOGE("Could not start InputReader thread due to error %d.", result); 
    8.  
    9.         mDispatcherThread->requestExit();        return result; 
    10.     }    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体系的事宜归类、分发流程,感兴趣的同伙可以留心存眷。

    【编辑推荐】

    1. 在体系安然方面,Android 8.0 做出了一些重要改变
    2. 8种办法让Android成为强大年夜的临盆力对象
    3. 49个你应当懂得的Android Studio技能、插件与资本
    4. 为什么要开辟Android库?
    5. Android ADB开宣布用敕令总结
    【义务编辑:未丽燕 TEL:(010)68476606】

      推荐阅读

      你的还是我的?谈谈云安全责任共担模型

    51CTO诚邀您9月23号和秒拍/国美/美团元专家一路聊智能CDN的优化之路,抓紧时光哦! 以前几个月,安然界见证了多起重大年夜云数据泄漏事宜。6月份1.97亿美国选平易近的泄漏事宜,震动全球。>>>详细阅读


    本文标题:Android Input子系统:Input进程的创建,监听线程的启动

    地址:http://www.17bianji.com/lsqh/37309.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)