作家
登录

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

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

  •     mWakeWritePipeFd = wakeFds[1]; 
  •  
  •     result = fcntl(mWakeReadPipeFd, F_SETFL, O_NONBLOCK); 
  •     …… 
  •     result = fcntl(mWakeWritePipeFd, F_SETFL, O_NONBLOCK); 
  •     …… 
  •     result = epoll_ctl(mEpollFd, EPOLL_CTL_ADD, mWakeReadPipeFd, &eventItem); 
  •     …… 
    1. InputManager.cpp 
    2.  
    3. InputManager::InputManager(        const sp<EventHubInterface>& eventHub,        const sp<InputReaderPolicyInterface>& readerPolicy,        const sp<InputDispatcherPolicyInterface>& dispatcherPolicy) { 
    4.     mDispatcher = new InputDispatcher(dispatcherPolicy); 
    5.     mReader = new InputReader(eventHub, readerPolicy, mDispatcher); 
    6.     initialize(); 
    7. }void InputManager::initialize() { 
    8.     mReaderThread = new InputReaderThread(mReader); 
    9.     mDispatcherThread = new InputDispatcherThread(mDispatcher); 

    至此,InputManagerService对象的初始化就完成了,根据开首说的,接下来就会调用InputManagerService的start()办法。

    监听线程InputReader和InputDispatcher的启动

    在start()办法中,做了以下工作:

    • 调用nativeStart办法,其实就是调用InputManager的start()办法
    • 将InputManagerService交给WatchDog监控
    • 注册触控点速度、显示触控的不雅察者,并注册广播监控它们
    • 主动调用updateXXX办法更新(初始化) 
    1. InputManagerService.javapublic void start() { 
    2.     Slog.i(TAG, "Starting input manager"); 
    3.     nativeStart(mPtr);    // Add ourself to the Watchdog monitors. 
    4.     Watchdog.getInstance().addMonitor(this); 
    5.  
    6.     registerPointerSpeedSettingObserver(); 
    7.     registerShowTouchesSettingObserver(); 
    8.     registerAccessibilityLargePointerSettingObserver(); 
    9.  
    10.     mContext.registerReceiver(new BroadcastReceiver() {        @Override 
    11.         public void onReceive(Context context, Intent intent) { 
    12.             updatePointerSpeedFromSettings(); 
    13.             updateShowTouchesFromSettings(); 
    14.             updateAccessibilityLargePointerFromSettings(); 
    15.         } 
    16.     }, new IntentFilter(Intent.ACTION_USER_SWITCHED), null, mHandler); 
    17.  
    18.     updatePointerSpeedFromSettings(); 
    19.     updateShowTouchesFromSettings(); 
    20.     updateAccessibilityLargePointerFromSettings(); 

        推荐阅读

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

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


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

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

    关键词: 探索发现

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

    网友点评
    自媒体专栏

    评论

    热度

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