系统启动流程 2023-09-10 剑道仙尊 54 1、BootRom 启动电源以及系统启动。 当电源按下时,引导芯片代码从预定义的地方(固化在ROM中)开始执行。加载引导程序BootLoader到RAM,然后执行。 2、引导程序Bootloader 引导程序BootLoader是在android操作系统开始运行前的一个小程序,他的主要作用是把系统OS拉起来并运行。 3、Linux kernel启动 当内核启动时,设置缓存、被保护存储器、计划列表 系统启动流程
Android源码开始 2023-09-10 剑道仙尊 55 Framework源码下载: https://android.googlesource.com/platform/frameworks/ https://android.googlesource.com/platform/packages/modules/Wifi/ 系统架构图 Android源码开始
Launcher的Activity.onCreate 2022-09-11 剑道仙尊 41 进入 ActivityThread.main,最终完成 Launcher.onCreate 操作 Zygote fork 出了 Launcher 进程,并把接下来的 Launcher 启动任务交给了 ActivityThread 来进行,接下来就从 ActivityThread.main 方法来分析 Launcher 的创建过程。 以下是 ActivityThread 启动 Activity 的 Launcher的Activity.onCreate
Launcher启动流程 2022-09-11 剑道仙尊 43 Launcher介绍 系统启动的最后一步是启动一个应用程序来显示系统中已经安装的应用程序,这个应用程序就叫做 Launcher。Launcher 就是 Android 系统的桌面。 Launcher 在启动过程中会请求 PackageManagerService 返回系统中已经安装的应用程序信息,并将这些信息封装成一个快捷图标列表显示在系统屏幕上,这样用户就可以通过点击这些快捷图标来启动相应的应
创建Launcher进程 2022-09-11 剑道仙尊 45 Zygote进程接收请求并创建 Launcher进程 想要启动一个应用程序,首先要保证这个应用程序所需要的应用程序进程已经启动。 AMS 在启动应用程序时会检查这个应用程序所需要的应用程序进程是否已经存在,如果不存在就会请求 Zygote 进程启动需要的应用程序进程。 在 Zygote进程启动过程 中可以知道,在 ZygoteInit.main 方法中会创建一个 Server 端的 Socket 创建Launcher进程 创建Launcher进程
Launcher的配置 2022-09-11 剑道仙尊 45 Launcher 的配置 在 SystemServer.startOtherServices 方法中调用ActivityManagerService.systemReady方法 Launcher 进程的启动就是从这里开始的,以下是相关源码: // /frameworks/base/services/java/com/android/server/SystemServer.java private Launcher的配置
PackageManagerService 2022-09-11 剑道仙尊 42 PackageManagerService( PMS ) 1、PMS会把每个apk进行扫描,然后分别把每个apk里的信息都缓存在mPackages集合里。 2、当我们安卓手机开机成功后,我们点击某个app的图标时,Launcher进程就会请求SystemServer进程里的AMS去创建这个app的入口(启动)Activity,这时AMS就会请求zygote进程去孵化出该app应用进程。 只要是跟 PackageManagerService PackageManagerService
ActivityManagerService 2022-09-11 剑道仙尊 51 ActivityManagerService(AMS)主要负责系统中四大组件的启动、切换、调度以及应用程序的管理和调度工作,其职责与操作系统中的进程管理和调度模块类似。 ActivityManagerService 进行初始化的时机很明确,就是在 system_server 进程开启的时候,就会初始化 ActivityManagerService。(启动 APP 的时候,是需要 AMS 通知 Z ActivityManagerService
systemserver进程 2022-09-10 剑道仙尊 33 system server进程是由zygote进程fork出来的,在上面的ZygoteInit.main方法中调用forksystemserver方法,新创建出来的system_server进程便进入handleSystemServerProcess()方法,然后执行ZygoteInit.zygoteInit通过反射获取SystemServer类的main方法参数。 SystemServer的主