WMS
Windows Manager Service (WMS),承載著和“界面”有關(guān)的數(shù)據(jù)和屬性憔足,管理和“界面”有關(guān)的狀態(tài)贰镣。
就像N個(gè)演員參演的話(huà)劇:WMS是導(dǎo)演孽惰、SurfaceFlinger是攝像機(jī)晚岭、ViewRoot是演員個(gè)體。
WMS至少要完成以下兩方面的功能:
全局的窗口管理(Output):應(yīng)用程序的顯示請(qǐng)求在SurfaceFlinger和WMS的協(xié)助下有序地輸出給物理屏幕或其他顯示設(shè)備勋功。
全局的事件管理派發(fā)(Input):事件源包括鍵盤(pán)坦报、觸摸屏库说、鼠標(biāo)、軌跡球(TraceBoll)等片择。
WMS相關(guān)角色的簡(jiǎn)介
1.WindowManagerService(WMS)
WMS是系統(tǒng)服務(wù)的一部分潜的,由SystemService啟動(dòng),發(fā)生異常時(shí)自動(dòng)重啟字管,直到系統(tǒng)關(guān)機(jī)時(shí)才能退出啰挪。
在WMS沒(méi)有運(yùn)行之前,開(kāi)機(jī)動(dòng)畫(huà)由BootAnimation直接通過(guò)OpenGL ES與SurfaceFlinger的配合來(lái)完成嘲叔。
2.SurfaceFlinger
與WMS配合處理顯示請(qǐng)求亡呵,輸出到物理屏幕。
3.由圖形顯示需求的程序
System Window:如頂部的系統(tǒng)狀態(tài)欄借跪、壁紙等政己。
Application Window:“層級(jí)值”比系統(tǒng)窗口低酌壕,針對(duì)普通應(yīng)用程序的顯示申請(qǐng)產(chǎn)生的窗口掏愁。
SubWindow:子窗口,受限于其父窗口卵牍。如點(diǎn)擊Menu時(shí)出現(xiàn)的菜單果港。
4.InputMangerService(IMS)
派發(fā)系統(tǒng)按鍵和觸摸消息的角色。IMS收到按鍵或觸摸事件時(shí)糊昙,它需要尋找一個(gè)最合適的“窗口”來(lái)處理消息辛掠,而WMS則掌控系統(tǒng)中所有窗口的狀態(tài)和信息。
5.ActivityManagerService(AMS)
AMS與WMS由交互释牺。Activity 狀態(tài)的變化通常帶來(lái)“界面”的改變萝衩,如Activity1啟動(dòng)Activity2,那么Activity1逐漸淡出顯示没咙,而后Activity2的UI界面占據(jù)屏幕猩谊。
6.Binder通信
SurfaceFlinger、AMS或應(yīng)用程序與WMS間都需要進(jìn)行Binder通訊祭刚。