AMS是一个系统关键服务,运行在系统进程System_Server中,AMS实现了IBinder接口,它在一个单独的线程中运行,activity/service生命周期的回调都由AMS完成。
AMS提供了一个ArrayList mHistory来管理所有应用的activity,activity在AMS中的形式是ActivityRecord,task在AMS中的形式为TaskRecord,进程在AMS中的管理形式为ProcessRecord。所有的ActivityRecord会被存储在mHistory管理,每个ActivityRecord会对应到一个TaskRecord,并且有着相同TaskRecord的ActivityRecord在mHistory中会处在连续的位置,同一个TaskRecord的Activity可能分别处于不同的进程中。
通过Intent启动一个activity,AMS在得到请求启动activity时,首先需要根据Intent从PackageManager中获得要启动的activity,PackageManager解析应用的AndroidManifest.xml来获得所有的activity信息,针对每个Intent提供的信息,PackageManager会提供给AMS一个ResolveInfo对象。