對Android4 X視窗的認識

2021-06-19 19:04:42 字數 1954 閱讀 5117

視窗,可以理解為乙個可以提供給使用者互動的使用者介面,在這個介面裡,使用者可以通過物理按鍵事件,觸控事件等輸入事件和應用程式或者系統進行互動。

總體來說,視窗就是乙個可互動的

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的安全模式是系統遮蔽掉了所有非系統自帶程式,僅啟動原系統內自帶程式。在這種模式下,手機將以最安全的狀態啟動,沒有其他程式的干擾,耗電也將處於幾乎最低的狀態。當你的手機無...