InputManagerService

2InputManagerService 從名稱(chēng)可以理解柠新,輸入管理服務(wù)

談到Service窗价,特別系統(tǒng)的Service冈涧,啟動(dòng)就是SystemServer。

一拍顷、初始化

java層

流程圖詳解

1抚太、初始化,在SystemServer 調(diào)用在startOtherService 中初始化的InputManagerService

2、初始化過(guò)程中尿贫,分別初始化了InputManagerHandler电媳,調(diào)用Jni 的 nativeInit,

這里的關(guān)注點(diǎn)是 傳入了DisplayThread的 Looper帅霜,其實(shí)就是用它的Messagequeue匆背。傳入native 層,接受處理事件身冀。

Native 層的初始化

流程圖詳解

1钝尸、Jni 中初始化,mPtr 就是 NativeInputManager搂根,同樣對(duì)應(yīng)參數(shù)傳入

2珍促、NativeInpuManager 初始化InputManager 對(duì)應(yīng)的是(流程圖C_+名稱(chēng),表示是C++ 代碼)

3剩愧、InputManager 初始化 InputDispatcher 以及InputReader猪叙,派發(fā),以及讀取仁卷。

到這里穴翩,大概的初始化流程就結(jié)束了


二、啟動(dòng)


啟動(dòng)流程

啟動(dòng)還是有SystemServer發(fā)出

流程圖簡(jiǎn)要說(shuō)明

1锦积、這里只需關(guān)注nativeStart(mPtr)芒帕,上文有提到mPtr? ->NativeInputManager。

2丰介、就是把InputDispatcher 以及InputReader run起來(lái)

? ? ? run 不禁會(huì)想到線(xiàn)程背蟆。對(duì)這里是線(xiàn)程,但I(xiàn)nputDispatcher 哮幢、InputReader 并不是線(xiàn)程對(duì)象带膀。

? ?InputDispatcher? 對(duì)應(yīng)?InputDispatcherThread ,InputReader? 對(duì)應(yīng)InputReaderThread?

? ?在初始化InputManager的時(shí)候 橙垢,線(xiàn)程開(kāi)始創(chuàng)建的初始化的垛叨。(run 其實(shí)調(diào)用的線(xiàn)程的run)

讀取事件流程

流程圖簡(jiǎn)要說(shuō)明

1、這里兩個(gè)線(xiàn)程就工作了柜某,啟動(dòng)線(xiàn)程時(shí)會(huì)不斷的調(diào)用線(xiàn)程的threadLoop()函數(shù)嗽元,直到其返回false則停止。實(shí)際上莺琳,Android系統(tǒng)mDispatcherThread&mReaderThread的threadLoop()函數(shù)都是反饋true,所以這兩個(gè)線(xiàn)程一旦開(kāi)機(jī)便不會(huì)停止载慈。

2惭等、processEventsForDeviceLocked,是處理key 事件的办铡,后面交給InputDevice 處理辞做,InputDevice琳要,可以理解輸入設(shè)備,終端有各種輸入設(shè)備秤茅。

3稚补、InputDevice,又讓InputMapper? 處理框喳。

InputDevice课幕,InputMapper? 是什么時(shí)候創(chuàng)建的,關(guān)系是什么五垮?

先講下InputDevice 的由來(lái)



時(shí)序圖簡(jiǎn)要說(shuō)明

1乍惊、可以看出,addDevice 同樣是通過(guò)讀取底層事件上報(bào)放仗,來(lái)添加润绎,刪除沒(méi)有標(biāo)出,流程與add 一致诞挨。

2莉撇、在createDeviceLocked,中惶傻,分別創(chuàng)建了InputDevice棍郎,InputMapper,device 放入集合保存达罗,管理

? ? ?device->addMapper(new KeyboardInputMapper(device, keyboardSource, keyboardType));

? ? mapper add 到? device中坝撑。add,說(shuō)明也是個(gè)集合粮揉。

InputMapper 有很多子類(lèi)巡李,KeyboardInputMapper,SingleTouchInputMapper扶认,MultiTouchInputMapper侨拦,這里不一一舉例。

讀取怎么分發(fā)辐宾?

?時(shí)間讀取到了狱从,那又和上文提到的Dispatcher 有什么關(guān)系哩?


時(shí)序圖簡(jiǎn)要說(shuō)明

1叠纹、getListener->notifyKey,如時(shí)序圖的備注季研,事件都會(huì)加入一個(gè)隊(duì)列。

2誉察、readThread 每次循環(huán)都會(huì) flush与涡,把事件發(fā)出去,

? ? ? 看代碼就是mInnerListener->InputDispatcher?

在初始化 InputReader的時(shí)候,初始化 傳的就是InputListenerInterface驼卖。

? ? ? InputDispatcher 實(shí)現(xiàn)了InputDispatcherInterface

? ? ? ?InputListenerInterface 繼承了 InputListenerInterface

? ? ? 最后會(huì)調(diào)用 InputDispatcher 的notifyKey



盜圖一張


上圖氨肌,在InputMapper 中處理事件的時(shí)候,EV_* 代表的含義酌畜。

以上怎囚,InputReader,就告一段落了桥胞。恳守,后面繼續(xù)分析InputDispatcher的? 過(guò)程。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末埠戳,一起剝皮案震驚了整個(gè)濱河市井誉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌整胃,老刑警劉巖颗圣,帶你破解...
    沈念sama閱讀 211,639評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異屁使,居然都是意外死亡在岂,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)蛮寂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)蔽午,“玉大人,你說(shuō)我怎么就攤上這事酬蹋〖袄希” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,221評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵范抓,是天一觀(guān)的道長(zhǎng)骄恶。 經(jīng)常有香客問(wèn)我,道長(zhǎng)匕垫,這世上最難降的妖魔是什么僧鲁? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,474評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮象泵,結(jié)果婚禮上寞秃,老公的妹妹穿的比我還像新娘。我一直安慰自己偶惠,他們只是感情好春寿,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著忽孽,像睡著了一般绑改。 火紅的嫁衣襯著肌膚如雪馋缅。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,816評(píng)論 1 290
  • 那天绢淀,我揣著相機(jī)與錄音,去河邊找鬼瘾腰。 笑死皆的,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蹋盆。 我是一名探鬼主播费薄,決...
    沈念sama閱讀 38,957評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼栖雾!你這毒婦竟也來(lái)了楞抡?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,718評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤析藕,失蹤者是張志新(化名)和其女友劉穎召廷,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體账胧,經(jīng)...
    沈念sama閱讀 44,176評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡竞慢,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了治泥。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片筹煮。...
    茶點(diǎn)故事閱讀 38,646評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖居夹,靈堂內(nèi)的尸體忽然破棺而出败潦,到底是詐尸還是另有隱情,我是刑警寧澤准脂,帶...
    沈念sama閱讀 34,322評(píng)論 4 330
  • 正文 年R本政府宣布劫扒,位于F島的核電站,受9級(jí)特大地震影響意狠,放射性物質(zhì)發(fā)生泄漏粟关。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評(píng)論 3 313
  • 文/蒙蒙 一环戈、第九天 我趴在偏房一處隱蔽的房頂上張望闷板。 院中可真熱鬧,春花似錦院塞、人聲如沸遮晚。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,755評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)县遣。三九已至糜颠,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間萧求,已是汗流浹背其兴。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,987評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留夸政,地道東北人元旬。 一個(gè)月前我還...
    沈念sama閱讀 46,358評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像守问,于是被迫代替她去往敵國(guó)和親匀归。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容