国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Window 和windowManager源碼分析

2019-11-07 23:02:32
字體:
來源:轉載
供稿:網友

所有需要顯示在屏幕上的內容都要通過windowManager

windowManager 是一個接口 三個方法 add remove update

他的具體實現類是windowManagerImpl類(橋接模式) 具體的實現是交給了windowManagerGlobal處理

WindowManagerGlobal Addview的過程 (每個window 都有對應的 VIEW VR )

檢查參數是否合法創建ViewRootImpl 并將 view添加到列表中 在其中有幾個列表 ArrayList mviews window 對應view ArrayList mRoots window 對應的 VR ArrayList mDyingview 被刪除的view對象 ArrayList<> mParams window 對應的參數布局通過viewRootImpl 的SetView方法完成 SetView通過requestLayout 完成異步請求 接著通過windowsession 完成最終的window添加過程 mWindowSession 是IwindowSession一個Binder對象 實現類是session (ipC調用) Session內部通過WMS來實現window 的添加 wms會為每一個應用保留一個session 由此進入到framework層

Activity 中window 的創建過程 1. Activty 所屬的window 對象是同過PolicyManager的makenewWindow方法實現的 2. 策略類 真正的實現類是policy 而policy中makeNewWindow方法返回的是phoneWindow 由此可見window的具體實現是phoneWindow 至此Activity 的window已經創建完成 那么Activity 的視圖是如何附屬在window 上的呢? 1.看setContentView 方法 2.轉移至Phonewindow 的setContentView 方法上 1.創建DecorView 頂級布局 2.將view 添加至mContentParent 上 3.回調Activity的onContentChanged 方法通知視圖已經改變。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 大庆市| 沁源县| 财经| 巫山县| 盐边县| 米林县| 光泽县| 金阳县| 全椒县| 衡阳县| 德令哈市| 白朗县| 嘉义市| 高淳县| 明水县| 潢川县| 桐庐县| 邻水| 郧西县| 焉耆| 北流市| 海林市| 铅山县| 礼泉县| 花莲县| 连南| 开封市| 保亭| 桓仁| 临沧市| 钟山县| 登封市| 榆树市| 隆尧县| 化隆| 安岳县| 虎林市| 丰县| 文安县| 木兰县| 潍坊市|