Android系統——輸入系統(十七)Dispatcher線程 分發dispatch
Android系統--輸入系統(十七)Dispatcher線程_分發dispatch1. 回顧
InputRead線程從輸入設備當中得到輸入事件
對於讀到輸入事件稍作處理,比如緊急事件,來電時候按下音量鍵便是靜音,這時候是直接處理的,處理之後再把輸入事件放入mInBoundQueue隊列當中,接著喚醒Dispatch線程。
對於Dispatch線程也是對輸入事件稍作處理之後,再給分發給應用程序
- Global Key/System Key:處理之後直接丟掉
- User Key:上傳給應用程序:通過查找目標APP得到對應connection,再把輸入事件放入某個outBoundQueue隊列中,應用程序將其取出處理。
2. 分發dispatch事件概述
在上一篇博文分析到在Dispatch線程當中有一個Vector容器(mConnectionByFd),裡面有多個connection,這些connection對應著一個個應用程序connection含有InputChannel(含有fd),應用程序也含有對應fd,fd通過socketpair機製得到。Dispatch線程找到對應的connection之後,便可以將輸入事件寫入InputChannel中的fd中,應用程序通過socketpair機制馬上便可以獲得fd。
3. 分發Dispatch過程查找目標
- 向WindowManagerService查詢當前窗口
- 獲得對應的connection
把輸入事件放入connection某個隊列outBoundQueue中
從隊列中取出,構造為InputMessage類型,逐個將輸入事件寫入fd中
4. 分發事件具體調用時序圖
※原創EntityFramework Core 中使用 CodeFirst 模式時 PowerShell 版本問題及解決
※electron 使用 node-ffi 調用 C++ 動態鏈接庫(DLL)
※HDU 5527---Too Rich(貪心+搜索)
※面向對象,局部變數和成員變數
TAG:達人科技 |
※Surface Phone蹤跡再現:運行Andromeda系統
※雷神911最新的6代機重裝系統提示no bootable device.systemstop修改bios教程
※可媲美Lighthouse,Occipital推高精度Inside-Out追蹤系統
※Facebook透露內部Fabric Aggregator分散式網路系統設計
※Nokia 7+曝光採用Android One系統
※Win7系統提示steam client not found解決方法
※Full Throttle購置Funktion One Vero系統
※The Nervous System 神經系統
※格里芬導彈系統 Griffin Missile System
※Verizon和Sprint正式向三星note8推送Android8.0系統升級
※小米Pro/Air筆記本重裝系統教程及開機No Bootable Devices解決方案
※Prometheus+Grafana實現監控系統
※kali linu滲透系統.md
※Google Android Wear智能手錶操作系統更名為Wear OS by Google
※華碩ZenFone Live L1發布:預裝Android Go系統
※多區塊鏈證明系統——Telegram Open Network
※Windows系統的JScript組件被曝存在一個0day RCE
※Google推出平板電腦Chromebook Tab 10,搭載Chrome OS系統
※任天堂 Switch 遭 fail0verflow 黑客組織破解,已可運行 Linux 系統
※Google Pixel 3曝光 或將運行Android 9.0系統