谈谈对 AMS 的理解--标准答案

详细讲解:
http://liuwangshu.cn/tags/ActivityManagerService/

1.AMS的作用

AMS是一个注册到ServiceManger的Binder Server,它的所有功能都列在IActivityManager中。
主要分为4类。
1)组件状态管理。这个组件指的是四大组件。如startActivity,startService等。
2)组件状态查询。如getCallingActivity,getServices。
3)Activity Task管理。可以将跨进程的Activity装进同一Task,可以复用系统资源,也符合使用习惯。
4)其他。如系统运行时信息查询,比如内存占用量,等。

2.AMS的成员

  1. Athread() 用来循环接收事件
  2. ActivityStack 记录系统中所有的 Activity 的状态,将不同状态的 Activity 放进不同的栈中
  3. ActivityTask 可以将跨进程的Activity装进同一Task,可以复用系统资源,也符合使用习惯

3.startActivity流程

这个事情太复杂了,只能简单说一部分步骤。

1)Client(可以是Launcher,也可以是已启动的App)通过binder IPC通知AMS startActivity。
2)AMS startActivityAsUser 对调用者进行权限检查。(binder 的安全性)
3)AMS startActivityMayWait 通过intent查找要启动的Activity。如果Activity是显示的,直接通过反射创建,如果是隐式的,还要跨进程去PMS查询匹配的Activity。

  1. AMS 检查并使用 Socket 通知 Zygote 创建进程,进程创建成功后 attachApplication 通知AMS进程创建成功。
    5)以上所有的准备操作都完成后,AMS 调用 realStartActivityLocked() 开始 Activity 的生命周期。

你可能感兴趣的:(谈谈对 AMS 的理解--标准答案)