Android进阶(一): Launcher启动过程
2018-12-02 本文已影响91人
Linhaojian
1.前言
- 最近一直在看 《Android进阶解密》 的一本书,这本书编写逻辑、流程都非常好,而且很容易看懂,非常推荐大家去看看(没有收广告费,单纯觉得作者写的很好)。
- 今天就将
Launcher 系统启动过程
总结一下(基于Android 8.0 系统)。 - 文章中实例 linhaojian的Github
2.Launcher 系统简易启动过程
Luancher简易流程.png3.各部分说明
3.1 启动电源以及系统启动:
- 电源按下时引导芯片代码从预定义的地方(ROM)开始执行,加载引导程序BootLoader到RAM,然后执行。
3.2 引导程序BootLoader:
- 引导程序BootLoader是在Android操作系统开始运行前的一个小程序,它的主要作用是把系统OS拉起来并运行。
3.3 Linux内核启动:
- 内核启动是,设置缓存、被保护存储器、计划列表、加载驱动。当内核完成系统设置时,它首先在系统文件中寻找init.rc文件,并启动init进程。
3.4 init进程启动:
- 初始化和启动属性服务,并且启动Zygote进程。
3.5 Zygote进程启动:
- 创建Java虚拟机并为Java虚拟机注册JNI方法;创建服务器端的Socket;启动SystemServer进程;创建应用程序的进程。
3.6 SystemServer进程启动:
- 启动Binder线程池和SystemServiceManager,并且启动各种系统服务(引导服务、核心服务、其他服务)。
引导服务:ActivityManagerService、PowerManagerService、PackageManagerService、Sensor....
核心服务:DropBoxManagerService、BatteryService、UsagerStatsService、WebViewUpdateService。
其他服务:CameraService、AlarmManagerService、WindowManagerService、NotificationManagerService....
3.7 ActivityManagerService:
- 启动Launcher进程;通过Socket向Zygote进程发送请教创建应用进程信息。
3.8 Launcher:
- Android系统应用;显示系统中所有已安装的应用。
3.9 LauncherModel:
- 加载系统已经安装的应用程序信息。
3.10 AllAppsContainerView:
- 显示APP列表。
4.总结
- 到此,简单把系统应用Launcher启动过程介绍完毕。
- 如果喜欢我的分享,可以点击 关注 或者 赞,你们支持是我分享的最大动力 。
- linhaojian的Github
欢迎关注linhaojian_CSDN博客或者linhaojian_简书!
不定期分享关于安卓开发的干货。
写技术文章初心
- 技术知识积累
- 技术知识巩固
- 技术知识分享
- 技术知识交流