視窗,可以理解為乙個可以提供給使用者互動的使用者介面,在這個介面裡,使用者可以通過物理按鍵事件,觸控事件等輸入事件和應用程式或者系統進行互動。
總體來說,視窗就是乙個可互動的
viewgroup,android
系統在某一時刻只會有且只有乙個視窗獲得焦點並且處於活躍狀態,可以接收各種事件。
視窗引數包括大小,型別等。 在
android
系統裡,視窗主要有如下幾種視窗
應用視窗()
狀態列視窗
(windowmanager.type_status_bar)
輸入法視窗
(windowmanager.type_input_method)
window
類是乙個抽象類,
phonewindow
是它的乙個實現,它是乙個具有互動功能檢視的抽象。並不是所有的視窗都會有
window
類,如輸入法視窗就沒有
window
類修飾檢視。
activity
所在的視窗是由
phonewindow
修飾的。
phonewindow,
持有乙個
decorview,
這個檢視將
activity
設定的contentview
作為子檢視,
phonewindow
表示乙個應用視窗,每乙個
activity
都持有乙個
phonewindow
windowmanager,
是乙個介面,它的作用是將視窗新增到
windowmanagerservice
,它只有乙個實現類,
windowmanagerimpl,windowmanagerimpl
在系統中只有乙個例項。但是
windowmanagerimpl,
也只是乙個殼子,真正新增視窗的工作是由
windowmanagerglobal
完成的.windowmanagerglobal
同樣也只有乙個例項。
windowmanagerimpl
新增視窗的時候不會檢查視窗的引數,
windowmanagerglobal
則會檢查視窗的引數。
viewrootimpl
,它會儲存視窗的檢視,乙個視窗檢視對應乙個
viewrootimpl.viewrootimpl
持有乙個
w物件,
w實現了
iwindow
介面,它是乙個
binder
服務,這個
w物件主要用於
windowmanagerservice
向viewrootimpl
反饋訊息。
iwindowsession,
它是乙個
binder
介面,session
實現iwindowsession.session
持有windowmanagerservice
物件。session,
表示乙個正在和
windowmanagerservice
進行互動的會話,每乙個檢視都會有對應的
session.
iwindwomanager,
是乙個binder
物件,windowmanagerservice
實現這個介面。
windowmanagerservice
裡它所理解的視窗就是乙個檢視,但是它並不持有具體的檢視物件,
windowmanagerservice
根據檢視的引數通過
viewrootimpl 的w
物件以及
session
的iwindowsession
物件和viewrootimpl
進行互動,控制檢視的顯示、關閉。
android 4 x占用系統資源過多
為什麼android 4.0會占用這麼多記憶體呢?這要從4.0的多工管理機制說起。4.0的程式有多種狀態 執行狀態 占用cpu和ram ram快取狀態 只占用ram nand flash快取狀態 只占用nand flash 後台服務狀態 占用較少的cpu和ram,常見的有資訊中心 後台提醒 網路定位...
Android 4 x手機進入安全模式的兩種方法
不僅windows系統有安全模式,android手機在4.0版本之後也加入了安全模式。與windows的安全模式類似,android的安全模式是系統遮蔽掉了所有非系統自帶程式,僅啟動原系統內自帶程式。在這種模式下,手機將以最安全的狀態啟動,沒有其他程式的干擾,耗電也將處於幾乎最低的狀態。當你的手機無...
Android 4 x手機進入安全模式的兩種方法
不僅windows系統有安全模式,android手機在4.0版本之後也加入了安全模式。與windows的安全模式類似,android的安全模式是系統遮蔽掉了所有非系統自帶程式,僅啟動原系統內自帶程式。在這種模式下,手機將以最安全的狀態啟動,沒有其他程式的干擾,耗電也將處於幾乎最低的狀態。當你的手機無...