IM輸入事件系統(tǒng)
這里的輸入事件指,觸摸屏、按鍵,不包括傳感器
- 底層
兩條線程,一條讀事件,一條向上發(fā)事件,
讀取輸入事件,采用epoll / poll機(jī)制去讀取輸入節(jié)點(diǎn) - 框架層
InputManagerService只是個(gè)包裝類,所有工作都是本地的InputManager在做,包括跟更底層的那兩個(gè)讀與派發(fā)線程交互。當(dāng)然,IMS也不是一無是處,它在框架層跟其它模塊交互,比如WMS啦
WMS, 與IMS交互,獲得最早的input事件,決定派發(fā)的根
PWM, 處理特殊輸入事件,如電源鍵,HOME
InputChannel, IM與View客戶端窗口類的交互通道,PIPE機(jī)制,只有在WMS確定讓某個(gè)窗口接收輸入事件時(shí),才接上
ViewRootImpl,真是一把手,輸入事件在客戶窗口的派發(fā),由它開始 - 應(yīng)用層
關(guān)注下Key / Touch在View樹的傳遞與處理機(jī)制,無非就是個(gè)責(zé)任鏈模式 + 模板方法模式