服務端
主要是ActivityManagerService(AMS), WindowManagerService(WMS),PackageM anerService(PMS)
- AMS 主要用於管理所有應用程序的Activity
- WMS 管理各個窗口,隱藏,顯示等
- PMS 用來管理跟蹤所有應用APK,安裝,解析,控制權限等.
還有用來處理觸摸消息的兩個類KeyInputQueue和InputDispatchThread,一個用來讀消息,一個用來分發消息.
客戶端
主要包括ActivityThread,Activity,DecodeView及父類View,PhoneWindow,ViewRootImpl及內部類W等
- ActivityThread主要用來和AMS通訊的客戶端,Activity是我們編寫應用比較熟悉的類
依賴Linux底層能力的驅動
主要是SurfaceFlingger(SF)和Binder驅動
- 每一個窗口都對應一個Surface,SF驅動的作用就是把每一個Surface顯示到同一個屏幕上
- Binder 內核驅動的作用,就是爲上面的服務端和客戶端(或者服務端和服務端之間),提供IPC通訊用的。
Zygote
系統中運行的第一個Dalvik虛擬機程序叫做zygote,該名稱的意義是“一個卵”,,因爲接下來的所有 Dalvik虛擬機進程都是通過這個“卵” 孵化出來的。
zygote進程中包含兩個主要模