系统启动流程
1、 ROM加载引导程序BootLoader到RAM,执行Bootloader启动Linux Kernel,启动init进程
- init进程解析init.rc脚本做一些初始化(挂在文件系统、创建工作目录,启动系统服务进程zygote,media等)
- zygote启动systemServer进程
- systemServer进程中启动了AMS、PMS、WMS等服务
- AMS打开Launcher的homeActivity,进入桌面
App安装流程
将apk文件复制到data/app目录
解析apk信息
dexopt操作
更新权限信息
完成安装,发送Intent.ACTION_PACKAGE_ADDED广播
APP启动
详情:冷启动和热启动
- 冷启动
后台没有改进程,这时系统会重新创建一个新的进程分配给该应用,这种启动方式为冷启动
App启动流程当点击app的启动图标后,首先会通过AMS在System进程展示一个Starting+Window(通常情况下是个白屏,可以通过设置Application的theme修改),接着AMS会通过Zygote创建应用程序的进程,并通过一系列的步骤后调用Application的attachBaseContext()、onCreate()然后最终调用Activity的onCreate()/onStart/onResume以及contentView的measure/layout/draw最终显示在界面上
- 热启动
后台已有该进程,系统从已有进程启动应用,这个方式为热启动。
(back键,home键)
热启动不会走Application
这步,直接走MainActivity(包括一系列测量、布局、绘制)
热启动比冷启动更快
网友评论