android 时序图怎么画

 时间:2024-10-11 21:12:42

1、= Android启动流程 =Android启动时序图

android 时序图怎么画

2、== Linux启动 ===== 开机过电,复位器件 ====== 执行Bootloader程序 ===arm中是uboot或者fastboot如果在fastboot的运行过程中没有按下特别的按键,执行第一个应用程序(即Linux Kernel),从NAND Flash中读取=== 初始化Linux Kernel ====== 读取init.rc文件 ===位于设备根目录下== Android启动 ===== 启动初始化进程init ===

android 时序图怎么画

3、==== init启动Linux守护进程 ====

android 时序图怎么画

4、==== init启动Zygeote进程 ====

android 时序图怎么画

5、受精卵,所有apk应用进程的父进程==== init初始化runtime进程 ======= runtime初始化并注册Service Manager ===

android 时序图怎么画

6、runtime向zygote申请实例化一个Dalvik Vm并启动SystemServer SystemServer启动native serivce(Surface Flinger和Audio Flinger),并将这些native Service注册在ServiceManager中。

android 时序图怎么画

7、SystemServer启动android管理服务,都会被注册ServiceManager中。

android 时序图怎么画

8、=== Zygote孵化home和contact进程 ===至此Android启动完成

9、== Zygote启动分析 ==Zygote的可执行文件在/system/bin/app_process中相关配置信息在/init.rc文件中

10、=== 启动Socket服务瞿搋村乇端口 ===Dalvik VM执行的第一个类ZygoteInit.java,Socket的启动也在此文件中 private stat足毂忍珩ic void registerZygoteSocket()静态函数中启动。 String env=System.getenv(ANDROID_SOCKET_ENV)获取系统为Zygote分配的Socket描述字。 用createFileDescriptor()创建一个文件描述符,再构造LocalServerSocket对象。 main()中调用runSelectLoopMode()进入非阻塞独模式 在while(true)中调用ZygoteConnection类的runOnce()处理接收的命令。

11、=== 加载preload-classes ===作用:预装Framework的大部分类和资源 类列表在/system/framework/framework.jar文件中的preload-classer文本文件中。 ZygoteInit.java的main()函数中通过调用preloadClasses()读取preload—classes的列表来装载这些类

12、=== 加载preload-筠续师诈resources ===preload-resources在/system/framework/base/res/res/values/arrays.xml文件中定义。 ZygoteInit.java的main()函数中通过调用preloadResources()读取arrays.xml的列表来装载这些资源。 preloadResources()调用preloadDrawable()来加载Drawable类资源,存于mResources类内部的Drawable列表内,调用preloadColor()加载Color类资源,存于mResources的Color列表内。

13、=== 启动SystemServer ===从ZygoteInit.java的main()调用startSystemServer()开始。

14、==== 启动各种系统服务线旯皱镢涛程 ====从SystemServer的main()开始执行,先调用init1()进行一些Dalvid VM的相关初始化工作。init1()内部会调用jav锾攒揉敫a端的init2()。主要的系统服务在init2()中完成。 init2()创建一个ServerThread线程,从ServerThread的run()开始真正启动系统服务。 AmS启动后: 1.调用main() 2.调用AmS.setSystemProcess() 3.调用Ams.installProviders() 4.调用systemReady() 5.启动第一个activity,即home程序。在Ams的startHomeActivityLocked()中发出一个intent,它包含CATEGORY_HOME,任何能相应此intent的程序都能成为第一个activity,成为home程序。

  • 企业微信怎么设置所在企业的名称
  • 私密浏览器怎么设置启动图案密码
  • 如何运用期货市场进行库存管理
  • 如何将收集到的以分号(;)结尾的邮箱自动换行
  • Java代码中如何优雅地处理货币金额数据
  • 热门搜索
    战争与和平手抄报 平安校园手抄报图片 珍爱生命手抄报资料 手抄报8k版面设计图 饮食与健康手抄报 文明礼仪手抄报诗歌 小学生新年手抄报 我爱老师手抄报 三爱三节手抄报图片 多彩的民族文化手抄报