android UI結構 (2)ViewRoot的橋樑作用
ViewRoot這個類在android的UI結構中扮演的是一箇中間者的角色,連線的是PhoneWindow跟WindowManagerService.
WindowManagerService中我們知道它讀取android系統裡所有事件,鍵盤事件,軌跡球事件等等,它怎麼分發到各個activity的呢?就是通過這個ViewRoot。
在每個PhoneWindow建立的時候,系統都會向WindowManger中的一個儲存View陣列增加PhoneWindow的DecorView物件,WindowManger在儲存好這個View物件的同時,也會新建立一個ViewRoot物件用來溝通WindowManagerService。
可以檢視WindowManagerImpl跟ViewRoot中的程式碼,同時ViewRoot中我們可以看到一個W型別,該型別派生自IWindow.stub可以知道這個可以被用來作遠端呼叫。
res = sWindowSession.add(mWindow, mWindowAttributes,
getHostVisibility(), mAttachInfo.mContentInsets);
IwindowSession則是WindowManagerService中的遠端呼叫介面,上述程式碼也表明了每建立了一個PhoneWindow,也就建立了一個ViewRoot,並將在WindowManagerService註冊。
接下來簡單的看下KeyEvent的傳遞。在WindowManagerService中
focus.mClient.dispatchKey(event);
這個段程式碼的mClient則就是ViewRoot中的W型別,通過遠端呼叫,可以看看ViewRoot的處理:
boolean handled = mView != null
? mView.dispatchKeyEventPreIme(event) : true;
mView則是PhoneWindow的DecorView物件,接下來怎麼具體傳遞可以慢慢去跟了。。。
相關文章
- 橋樑模式簡介模式
- Android程式框架:執行緒通訊的橋樑HandlerAndroid框架執行緒
- Goja—Go 和 JavaScript 的橋樑GoJavaScript
- Callback 與 Promise 間的橋樑 —— promisifyPromise
- 讀橋樑模式,有些困惑的地方?模式
- 用Google地圖做橋樑Go地圖
- android的視窗機制分析------ViewRoot類AndroidView
- android UI結構 (1)Activity 與 WindowAndroidUI
- 淺析 Flutter 與 iOS 的檢視橋樑FlutteriOS
- 線性變換和矩陣的橋樑篇2——像的座標標示矩陣
- NGUI建立Camera引數為Simple 2D的UI UI物件的結構UI Root(2D)NGUI物件
- GraphQL-前端開發的利劍與橋樑前端
- BeanPostProcessor——連線Spring IOC和AOP的橋樑BeanSpring
- Android Manifest.xml檔案的結構及作用AndroidXML
- Flutter與webview通訊橋樑開發FlutterWebView
- SQL與NoSQL,資料橋樑SqoopSQLOOP
- 數學模型——數學與人類文明的橋樑模型
- WebViewJavascriptBridge 原始碼中 Get 到的“橋樑美學”WebViewJavaScript原始碼
- 輕鬆架起Java連線COM物件的橋樑 (轉)Java物件
- 開源,架起理想和現實之間的橋樑
- SS241030C. 橋樑(bridge)
- 結構型模式:橋接模式模式橋接
- 結構型模式----橋接模式模式橋接
- ADAMoracle為智慧合約提供安全可靠的橋樑Oracle
- CATIA 橋樑正向設計資料文章彙總
- Bengio、楊強、唐劍領銜!探討如何構建AI學術研究和產業落地的橋樑AI產業
- OriginPro 2022: 資料與故事的智慧橋樑
- 輕鬆架起Java連線COM物件的橋樑(續二) (轉)Java物件
- 橋樑保護與監控-開發進度(一)
- 沿著“云云協同”的橋樑,奔赴全面雲化的產業之海產業
- 記主機板的南橋晶片和北橋晶片作用及區別(“幹南橋”)晶片
- Gridea,一個小而美的部落格夢想橋樑Idea
- Android 12(S) 圖形顯示系統 - 應用建立和SurfaceFlinger的溝通橋樑(三)Android
- 亞馬遜雲科技:中國企業出海創新的關鍵技術橋樑亞馬遜
- 資料編織:交易資料和分析資料的橋樑【含示例】
- ResponseTap:點選呼叫成連線線上和線下營銷的橋樑
- ASP.NET內幕 - ISAPI和應用程式域之間的橋樑ASP.NETAPI
- 二維碼生成器,連線物理與數字世界的橋樑