博客
关于我
【安卓开发系列 -- 系统分析】Framework -- Android 系统一般启动流程简介
阅读量:371 次
发布时间:2019-03-04

本文共 922 字,大约阅读时间需要 3 分钟。

Android系统启动流程简介

Android系统启动流程可分为几个关键阶段,每个阶段都有其特定的功能和作用。以下从高到低详细阐述各个层次的启动过程。

一、整体启动流程概述Android系统启动流程主要包含以下几个层次:

  • Loader层:包括BootRom和BootLoader
  • Kernel层:Android内核
  • Native层:init进程及相关系统服务
  • Framework层:AMS、PMS等核心服务
  • Application层:SystemUI、Launcher等用户应用
  • 二、详细启动流程解析

  • Bootloader引导程序Bootloader的主要职责包括:
    • 硬件初始化:完成设备的基础配置
    • 系统加载:将内核和根文件系统从存储设备加载到内存中
    • 加速启动:优化内核的启动效率
    1. Linux内核启动
      • 初始化软硬件环境:配置网络、存储、内存等
      • 加载驱动:安装设备相关的硬件驱动-挂载文件系统:完成根文件系统的访问准备内核启动完成后,会自动启动init进程,进入Android系统的启动阶段。
      1. init进程作为Linux系统中用户空间的第一个进程(进程号1),init进程的主要功能包括:
        • 文件系统管理
        • 属性服务提供
        • 解析init.rc脚本
        • 创建Zygote进程
        1. Zygote进程Zygote进程是Android系统中所有应用进程的父进程,其主要作用是:
          • 创建应用进程
          • 管理应用进程的生命周期
          • 提供基础的服务支持
          1. System Server进程System Server是Android系统的核心服务进程,主要功能包括:
            • 启动系统服务:ActivityManagerService、PackageManagerService、WindowManagerService等
            • 提供硬件服务:与HAL层通信
            • 应用程序接入:通过System Server获取系统服务句柄
            1. Launcher应用作为Android系统的第一个用户应用,Launcher的主要职责是:
              • 初始化桌面界面
              • 启动其他应用程序
              • 提供用户交互入口

              三、参考与致谢本文内容基于个人学习笔记,参考了多方资料,包括专业书籍和网络资源。在此对所有提供帮助的作者表示感谢。如有不当之处,请随时指出。

    转载地址:http://gvmr.baihongyu.com/

    你可能感兴趣的文章
    Plotly:如何在桑基图中设置节点位置?
    查看>>
    Plotly:如何处理重叠的颜色条和图例?
    查看>>
    Plotly:如何手动设置 plotly express 散点图中点的颜色?
    查看>>
    Plotly:如何结合 make_subplots() 和 ff.create_distplot()?
    查看>>
    Plotly:如何绘制累积的“步骤“;直方图?
    查看>>
    Quartz进一步学习与使用
    查看>>
    Plotly条形图-根据正/负值更改颜色-python
    查看>>
    PLSQL developer12安装图解
    查看>>
    PLSQL Developer调试 存储过程和触发器
    查看>>
    PLSQL window操作
    查看>>
    plsql 存储过程 测试
    查看>>
    plsql 安装后database下拉没有东西
    查看>>
    PLSQL_Oracle PLSQL内置函数大全(概念)
    查看>>
    PLSQL_案例优化系列_体验逻辑结构如何影响SQL优化(案例3)
    查看>>
    PLSQL中INDEX BY TABLE的 DELETE操作
    查看>>
    plsql学习笔记---plsql相关概念,以及基础结构
    查看>>
    plsql数据库异常---plsql 登录后,提示数据库字符集(AL32UTF8)和客户端字符集(ZHS16GBK)不一致
    查看>>
    plsql查询乱码问题解决
    查看>>
    PLSQL的DBMS_GETLINE
    查看>>
    quartz简单demo,教你最快使用quartz
    查看>>