1、簡介
ActivityManagerService(AMS)是一個很重要的系統服務,下面首先從類圖來了解一下AMS及Activity的大家族,幾個核心的類已用顏色區分。
2、啓動
AMS在SystemServer中啓動,時序如下圖,可以看到Home是在AMS的systemReady中啓動的。
3、Lifecycle
Activity的Lifecycle是一個很重要的概念,如下圖。
Activity的Lifecycle的更多說明可參考:https://developer.android.com/guide/components/activities/activity-lifecycle。
Fragment與Activity的Lifecycle稍有不同,如下圖。
Fragment的詳細說明可參考:https://developer.android.com/guide/components/fragments。
4、Task&Stack
Activity的管理有個Task&Stack的概念,可以簡單理解爲Activity分組,表示了Activity間的關係,相關的類包括TaskRecord、ActivityStack、ActivityRecord,如下圖。
Task&Stack相關的說明可參考:https://developer.android.com/guide/components/activities/tasks-and-back-stack。
5、Recents
Android可以查看最近的Activity,然後從中打開某一個Activity或者關閉它們,這個功能是SystemUI的一部分,詳見:https://developer.android.com/guide/components/activities/recents。
6、多窗口
Android N開始支持多窗口,即分屏模式下的兩個Activity同時出現,或者畫中畫模式,用法詳見:https://developer.android.com/guide/topics/ui/multi-window。
7、Widget
Widget,即小插件,常在Home界面,可以不用打開App而處理一些事情,用法詳見:https://developer.android.com/guide/topics/appwidgets/overview。
8、快捷方式
快捷方式,即Home上的快捷方式,如何添加快捷方式,可從xml中配置,也可從java中添加,詳見:https://developer.android.com/guide/topics/ui/shortcuts/。
9、鏈接
鏈接,就是在一個地方打開另一個地方的東西,詳見:https://developer.android.com/guide/topics/ui/shortcuts/。
10、startActivity
startActivity是一個經常用到的東西,一般有兩種方式,一種是通過Activity直接啓動,另一種是通過Context啓動Activity。Android提供了兩種監控、攔截Activity的方式,一種是ActivityMonitor,另一種是ActivityController。下圖展示了從Activity中啓動的流程。