ActivityThread:每一个应用程序客户端都是从该类开始的。一个客户端对应一个ActivityThread,负责创建这个“家庭”,并负责与外界打交道(接收AMS的通知等)。
ApplicationThread:它是一个Binder对象,ActivityManagerService会使用它来和ActivityThread来进行进程间通信
ActivityService
ActivityServiceNative
ActivityManagerService:负责Activity的一些调度,比如启动Acitvity,切换Activity,都要通过它;内存管理(activity);进程管理(AmS向外提供了查询系统正在运行的进程信息的API);
1.当AmS收到启动某个activity的Intent后,首先会检查一下环境,比如Caller(意图发起者)是否有启动权限,intent的目标activity是否存在等。它会根据Intent的信息找到匹配的(PackageManager)Component信息。
WindowManagerService:
ServiceManager:管理各种系统服务。本身也是一个service,可以通过BinderInternal,getContextObject()获取该对象Binder引用,从而通过该引用再去获取其它service的Binder引用。ServiceManager是Android系统Binder进程间通信机制的守护进程,负责管理系统中的Binder对象,所有启动的系统服务都添加到此。
SystemServer(main->init1->ini2(*))->ServiceThread:addService()注册各种服务。
Instrumentation:可以理解为应用进程的管家,ActivityThread要创建或暂停某个Activity时,是通过这个“管家”进行的;设置这个管家的好处是可以统计所有的“开销”,开销的信息保存在“管家”那里。这个类的对象是在ActivityThread创建Activity时创建的
PhoneWindowManager:
LocalActivityManager:用来 使用主线程对象 mActivityThread 来装载指定的Activity。
Intrumentation:用来监控应用程序和系统的交互