Android高工必备:说说从手机开机到APP启动FrameWork层的整体执行流程
本文讲解从开机到app显示画面的流程,但不分析源码,如果想阅读源码请到参考文章中查阅。
纸上说来终觉浅,建议有时间的小伙伴去我的B站观看视频讲解:Android进阶:手机开机到APP启动中间FrameWork层发生了什么?
本文把这段流程分为三部分:
-
从开机到显示应用列表
-
从点击应用图标到Activity创建成功
-
从Activity创建成功到显示画面
从开机到显示应用列表
先看流程图:
开机加电后,CPU先执行预设代码、加载ROM中的引导程序Bootloader和Linux内核到RAM内存中去,然后初始化各种软硬件环境、加载驱动程序、挂载根文件系统,执行init进程。
init进程会启动各种系统本地服务,如SM(ServiceManager)、MS(Media Server)、bootanim(开机动画)等,然后init进程会在解析init.rc文件后fork()出Zygoto进程。
Zygote会启动Java虚拟机,通过jni进入Zygote的java代码中,并创建socket实现IPC进程通讯,然后启动SS(SystemServer)进程。
SS进程负责启动和管理整个framework,包括AMS(ActivityManagerService)、WMS(WindowManagerService)、PMS(PowerManagerService)等服务、同时启动binder线程池,当SS进程将系统服务启动就绪以后,就会通知AMS启动Home。
AMS通过Intent隐式启动的方式启动Launcher,Launcher根据已安装应用解析对应的xml、通过findBiewById()获得一个RecycleView、加载应用图标、最后成功展示App列表。
解释
-
预设代码:cpu制造厂商会预设一个地址,这个地址是各厂家约定统一的

