Activity的启动过程
![](https://img.haomeiwen.com/i10757752/2c4c1983724d36cc.png)
图中相关模块的作用
ActivityThread
可以把它理解为应用运行的主线类,它的主要功能有:
包含了应用的入口 : main()
这个函数主要做了下面工作:
- 利用ApplicationThread建立了应用与AMS的链接。
- 构造了Instrumentation。
- 创建了应用的Application。
- 开启了主线程的消息处理模型。
管理应用四大组件的运行
ApplicationThread
它是应用程序在AMS中的Binder对象,AMS利用它可以和ActivityThread通信,四大组件相关回调都是通过它来告诉ActivityThread的。
Instrumentation
这个类伴随着ActivityThread一块诞生,主要用来帮助ActivityThread来管理Activity相关工作。它持有着AMS在应用端的Binder,ActivityThread主要通过它来和AMS通信。
ActivityManagerService
它是Android最核心的服务,主要管理着Android系统中四大组件的运行,
ActivityStackSupervisor
负责所有Activity栈的管理。内部管理了mHomeStack、mFocusedStack和mLastFocusedStack三个Activity栈。其中,mHomeStack管理的是Launcher相关的Activity栈;mFocusedStack管理的是当前显示在前台Activity的Activity栈;mLastFocusedStack管理的是上一次显示在前台Activity的Activity栈。
ClientLifecycleManager
帮助AMS回调应用程序四大组件生命周期相关方法。
android系统启动过程
Boot Loader↓
Linux init.rc↓
Zygote
---- main() ↓
---- new SystemServer().run() ↓
SystemServer
---- mActivityManagerService = new SystemServiceManager().startService(ActivityManagerService) ↓//创建AMS
---- mActivityManagerService.setSystemProcess()//将SystemServer进程可加到AMS中调度管理
-
AMS创建过程 涉及到Android 四大组件管理的初始化:
Broadcast --》BroadcastQueue
Provider --》ProviderMap
Service --》ActiveServices
Activity --》ActivityStackSupervisor
image.png
网友评论