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中启动的流程。