AMS主要功能:
ActivityManagerService 簡稱AMS,AMS是Android中最核心的服務,主要負責系統中四大組件的啓動、切換、調度及應用進程的管理和調度等工作。還負責啓動或殺死應用程序的進程。
功能包括:
- 統一調度所有應用程序的Activity的生命週期
- 啓動或殺死應用程序的進程
- 啓動並調度Service的生命週期
- 註冊BroadcastReceiver,並接收和分發Broadcast
- 啓動併發布ContentProvider
- 調度task
- 處理應用程序的Crash
- 查詢系統當前運行狀態
AMS的工作流程:
AMS的工作流程,其實就是Activity的啓動和調度的過程。可以見Activity的啓動流程總結。
AMS的設計思想
AMS也用到了設計思想,主要是代理模式。
根據上圖我們可以看出,ActivityManagerProxy和ActivityManagerNative都實現了IActivityManager,ActivityManagerProxy就是代理部分,ActivityManagerNative就是實現部分,但ActivityManagerNative是個抽象類,並不處理過多的具體邏輯,大部分具體邏輯是由ActivityManagerService承擔,這就是爲什麼我們說真實部分應該爲ActivityManagerService。
WMS主要功能:
負責功能包括:
- 爲所有窗口分配Surface。客戶端向WMS添加一個窗口的過程,其實就是WMS爲其分配一塊Surface的過程,一塊塊Surface在WMS的管理下有序的排布在屏幕上。Window的本質就是Surface。
- 管理Surface的顯示順序、尺寸、位置。
- 管理窗口動畫。
- 輸入系統相關:WMS是派發系統按鍵和觸摸消息的最佳人選,當接收到一個觸摸事件,它需要尋找一個最合適的窗口來處理消息。
WMS工作流程:
1.窗口大小和位置(X軸和Y軸)的計算過程
2.窗口的組織方式
3.輸入法窗口的調整過程
4.壁紙窗口的調整過程
5.窗口Z軸位置的計算和調整過程
6.Activity窗口的啓動窗口的顯示過程
7.Activity窗口的切換過程
8.Activity窗口的動畫顯示過程
WMS的設計思想:
WMS的設計思想就是利用了橋接模式。
PWS主要功能:
PackageManagerService(簡稱 PMS),是 Android 系統核心服務之一,處理包管理相關的工作,常見的比如安裝、卸載應用等。PMS是系統服務,那麼應用層肯定有個PackageManager作爲binder call client端來供使用,但是這裏要注意,PackageManager是個抽象類,一般使用的是它的實現類:ApplicationPackageManager。因此PackageManager功能的具體實現還是ApplicationPackageManager這個實現類。
負責功能包括:
- 提供一個應用程序的所有信息(ApplicationInfo)
- 提供四大組件的信息
- 查詢permission相關信息
- 提供包的信息
- 安裝、卸載APK
參考:https://blog.csdn.net/ljx1400052550/article/details/115518631