图解Android系统按下电源到显示界面的5个关键过程

如上面所说

图解Android系统按下电源到显示界面的5个关键过程

一、引导程序启动

    过程描述

    当电源按下时,引导芯片代码从预定义的地方(固化在ROM)开始执行。

    加载引导程序BootLoader到RAM中,然后执行。BootLoader是在Android操作系统开始运行前的一个小程序,它的主要作用是把系统OS拉起来并运行。

    接着,Linux内核启动,设置缓存、被保护存储器、计划列表、加载驱动。

图示:(此处为文字描述,图片已插入至下方)

二、init进程启动

    过程描述

    内核完成系统设置后,在系统文件中寻找init.rc文件,并启动init进程。

    init进程负责创建和挂载启动所需的文件目录,初始化和启动属性服务,解析init.rc配置文件并启动Zygote进程。

图示:(已在上方展示init进程启动图示)

三、Zygote进程启动

    过程描述

    init进程fork出Zygote进程后,Zygote进程会创建一个服务端socket,等待AMS(Activity Manager Service)发起socket请求。

    Zygote进程启动过程中,会创建AppRuntime并调用其start方法,启动Zygote进程;创建Java虚拟机并为Java虚拟机注册JNI方法;通过JNI调用ZygoteInit的main函数进入Zygote的Java框架层;通过registerZygoteSocket方法创建服务器端Socket,并通过runSelectLoop方法等待AMS的请求来创建新的应用程序进程;启动SystemServer进程。

图示

四、系统服务启动

    过程描述

    SystemServer进程被创建后,启动Binder线程池,以便与其他进程进行通信。

    创建SystemServiceManager,用于对系统的服务进行创建、启动和生命周期管理。

    启动各种系统服务,这些服务在ServiceManager进程中完成注册和获取,跨进程通信上使用Android的binder机制。

图示

五、应用启动与窗口显示

    应用启动过程

    Launcher进程向AMS请求创建根Activity。

    AMS判断根Activity所需的应用程序进程是否存在,如果不存在,就会请求Zygote进程创建应用程序进程。

    应用程序进程启动后,AMS请求创建应用程序进程并启动根Activity。

    窗口显示过程

    应用程序要显示或更新界面时,会通过设置一个视图(如Activity的内容视图)来开始这个过程。

    如果视图的结构发生变化,就会调用requestLayout方法,标记视图树需要重新布局和测量。

    WMS(Window Manager Service)负责处理窗口的创建、大小位置的更新、层次管理等,为新窗口分配Surface(即绘制窗口内容的画布),并管理窗口在屏幕上的显示次序。

    SurfaceFlinger负责将来自不同窗口的Surface合成,然后将最终的图像渲染到屏幕上。

图示

以上就是Android系统从按下电源到显示界面的5个关键过程的图解说明。

温馨提示:答案为网友推荐,仅供参考
图解Android系统按下电源到显示界面的5个关键过程
一、引导程序启动 过程描述:当电源按下时,引导芯片代码从预定义的地方(固化在ROM)开始执行。加载引导程序BootLoader到RAM中,然后执行。BootLoader是在Android操作系统开始运行前的一个小程序,它的主要作用是把系统OS拉起来并运行。接着,Linux内核启动,设置缓存、被保护存储器、计划列表、加载驱动。图示

图解Android系统按下电源到显示界面的5个关键过程
1. 电源启动与系统加载 按下电源时,引导芯片执行预设代码,加载BootLoader至RAM,接着执行。2. BootLoader执行 BootLoader作为系统启动前的小程序,主要任务是启动系统OS,确保设备正常运行。3. Linux内核启动 内核启动后,设置缓存、保护存储器,加载驱动,并在完成系统设置后,通过寻找init.rc文件启动init...

按下电源键后竟然发生了这一幕 —— Android 系统启动流程分析_百度...
Android系统启动流程主要包括以下几个关键步骤:Bootloader启动:当用户按下电源键或系统重启时,Bootloader作为第一个启动的程序,负责将系统内核装载至内存中并启动。init进程启动:init进程是用户空间的第一个进程,它主要负责读取init.rc文件来启动一系列关键系统进程。这些关键进程包括servicemanager、surfacefli...

手机开机启动过程
init进程是用户空间的第一个进程,负责解析初始化脚本(如init.rc),启动系统核心服务。三、系统服务启动阶段init进程通过脚本配置,按顺序启动关键服务:Zygote进程初始化:init会启动Zygote(Java进程的父进程)。Zygote在启动时会预加载Java虚拟机(JVM)和核心类库(如android.jar),并通过fork()系统调...

Android 应用启动全流程分析(源码深度剖析 + Systrace 展示)_百 ...
从用户触控屏幕到应用界面展现,应用启动过程涉及Android系统核心,是用户体验的关键指标。优化应用启动速度是系统及开发者长期追求的目标。深入理解应用启动流程,对系统架构有全面认识,是实现优化的基础。大纲 本文将结合多年经验与Systrace分析,全面剖析从触控桌面应用图标到应用界面显示的整个应用启动过程,...

安全模式如何进入?
1、长按右侧的关机键重启及关机。2、在未开机前长按音量减小功能键。3、手机开机后,页面显示为安全模式。4、退出安全模式,可以长按关机键。5、点击重启等待重启完成即可恢复正常模式。注意事项:1、进入安全模式关键是在长按开关机键时,还没有显示正常手机桌面前要按住音量缩小功能键。2、进入安全...

android中的显示(surface ,window ,surface flinger)
定义:Surface Flinger是Android系统中的一个服务,负责管理所有被渲染的可见Surface。它根据WindowManager提供的信息,将这些Surface合成到显示部分。作用:Surface Flinger负责将多个Surface按照z-order混合在一起,并输出到屏幕上。它是实现多窗口显示和复杂界面合成的关键组件。四、显示流程 获取并锁定Surface:...

进入recovery如何进入recovery界面
1,摁音量键“+”和电源键进 入recovery界面。 2,选择你所需要的语言后选择“清除数据”。 3,选择清除“所有数据”,按下电源键确认。 4,按下电源键选择“确认”选项,清除数据。 5,该操作会清除rom内相关数据,请提前做好备份。 6,进入recovery,选择“将update.zip安装至系统一”。 7,点击“确定”后系统进行...

3588android休眠唤醒流程
当检测到触摸时,驱动首先监听FB_EVENT_BLANK事件以确认当前显示屏状态(如是否处于黑屏)。若确认系统处于息屏状态,驱动会主动上报KEY_POWER按键事件,模拟用户按下电源键的操作。这一过程需避免系统进入深度睡眠状态,因为深度睡眠会关闭部分硬件模块(如触摸控制器),导致触屏无法唤醒系统。2. 系统服务层...

Android系统Launcher启动流程
Android系统Launcher启动流程主要包括以下几个核心步骤:init进程启动:作用:作为系统初始化的核心,init进程负责设置进程优先级,创建必要的文件目录等。关键组件:FirstStageMain负责挂载相关文件,SetupSelinux负责安全策略设置。Zygote进程的启动:启动方式:通过解析init.rc脚本启动。功能:与AppRuntime交互,...

相似回答
大家正在搜