1.当电源键按下系统加载引导程序BootLoader到RAM中,开始执行
2.Linux内核启动
3.当内核启动时,首先进行系统设置init.rc文件并启动第一个进程:init
4.init进程启动启动zygote进程启动
5.zygote虚拟机启动一个子进程system_server,同时定义了一个Socket用来处理AMS启动应用的请求,fork出了SystemServer进程,SystemServer和Zygote进程是Android框架中两个重要的进程,系统里重要的进程都在SystemServer里开启,如AMS(ActivityManagerService 四大组件)、WMS(WindowManagerService 简称 WMS,一般负责界面display)、PMS(PackageManagerService 应用的启动卸载)等。
6.启动桌面
SystemServer启动后会初始化ActivityManagerService,同时加载本地系统服务库,调用createSystemContext()创建系统上下文,创建ActivityThread及各种服务
WMS的职责:
WMS 是窗口的管理者,它负责窗口的启动、添加和删除。另外窗口的大小和层级也是由 WMS 进行管理的。
子系统WindowAnimator 来负责动画
通过对窗口的触摸从而产生触摸事件,InputManagerService(IMS) 会对触摸事件进行处理,它会寻找一个最合适的窗口来处理触摸反馈信息,WMS 是窗口的管理者
窗口不具备绘制功能. Surface 来供自己绘制,但是Surface 是WMS 来提供的
AMS用于生命周期的管理 ActivityThread作为AMS的缓存对象,把曾经启动的activity缓存到ActivityThread类中的mActivities 集合中