首先分別介紹下這三者:
然後一句話介紹下三者的關係:
activity通過window來實現檢視元素的展示,window可以理解為乙個容器,盛放著乙個個的view,用來執行具體的展示工作。
當我們執行程式的時候:
在activity中呼叫attach,建立了乙個window
建立的window是其子類phonewindow,在attach中建立phonewindow
在activity中呼叫setcontentview(r.layout.***)
其中實際上是呼叫的getwindow().setcontentview()
呼叫phonewindow中的setcontentview方法
建立parentview: 作為viewgroup的子類,實際是建立的decorview(作為framlayout的子類)
將指定的r.layout.***進行填充 通過布局填充器進行填充【其中的parent指的就是decorview】
呼叫到viewgroup
呼叫viewgroup的removeallview(),先將所有的view移除掉
新增新的view:addview()
最後總結:
window是乙個介面的視窗(唯一的實現類是phonewindow),是存放view的容器,即window是view的管理者,或者說是附著在window上的。android中所有的檢視都是通過window來呈現的,比如activity,dialog,toast,他們的檢視都是附著在window上的。比如我們常用的彈出對話方塊時,把背景變暗,就是通過折這window的alpha值來實現的。window的新增、刪除和更改是通過windowmanager來實現的。而windowmanager又是繼承viewmanager的
viewmanager是乙個介面有三個方法:
可見windowmanager也是乙個介面,它的具體實現類是windowmanagerimpl
注:乙個activity構造的時候只能初始化乙個window(phonewindow),另外這個phonewindow有乙個」viewroot」,這個」viewroot」是乙個view活viewgroup,是最初始的跟檢視,然後通過addview方法將view乙個個層疊到viewroot上,這些層疊的view最終放在window這個載體上面
Activity Window View三者關係
目錄介紹 02.toast原始碼深度分析 03.dialogfragment原始碼分析 04.dialog原始碼分析 05.popupwindow原始碼分析 06.snackbar原始碼分析 07.彈窗常見問題 09.onattachedtowindow和ondetachedfromwindow 1...
KVM Qemu Libvirt三者之間的關係
原始出處 作者資訊和本宣告。否則將追究法律責任。qemu qemu 是乙個模擬器,它向 guest os 模擬cpu 和其他硬體,guest os 認為自己和硬體直接打交道,其實是同 qemu 模擬出來的硬體打交道,qemu 將這些指令轉譯給真正的硬體。由於所有的指令都要從 qemu 裡面過一手,因...
KVM Qemu Libvirt三者之間的關係
在所謂的kvm技術中,應用到的其實有2個東西 qemu kvm kvm負責cpu虛擬化 記憶體虛擬化,實現了cpu和記憶體的虛擬化,但kvm不能模擬其他裝置 qemu是模擬io裝置 網絡卡,磁碟 kvm加上qemu之後就能實現真正意義上伺服器虛擬化。因為用到了上面兩個東西,所以一般都稱之為qemu ...