安卓运行环境(四)

 

 

Linux系统的启动过程,在该过程的最后,内核将读取initrc文件,因为Android系统相对于Linux内核而言仅仅是一个Linux应用程序而已,所以,安卓的启动也是在init.rc中被声明shell

 

Linux系统中运行的第一个Dalvik虚拟机程序叫作zygote,接下来的全部Dalvik虚拟机进程都是经过这个“ 卵” 孵化出来的。架构

 

 zygote进程app

 包含两个主要模块工具

       Socket服务端:该Socket服务端用于接收启动新的Dalvik进程的命令线程

       Framework共享类及共享资源:zygote进程预先会装载共享类和共享资源,这些类及资源实际上就是SDK中定义的大部分类和资源blog

  zygote孵化出的第一个Dalvik进程叫作SystemServer进程

  SystemServer中建立了一个Socket客户端,并有AmS负责管理该客户端,以后全部的Dalvik进程都将经过该Socket客户端间接被启动资源

  当须要启动新的APK进程时,AmS中会经过该Socket客户端向zygote进程的Socket服务端发送一个启动命令,而后zygote会孵化出新的进程。(使用fo lk 启动新的进程)虚拟机

 

 从系统架构的角度来说,就在于此即先建立一个zygote,并加载共享类和资源,而后经过该zygote,去孵化新的Dalvik进程。
 it

 dx工具

  $ adb push foo.jar /data/app                                   装载到目录
  $ adb shell dalvikvm -cp /data/app/foo.j ar Foo         运行

 

SystemServer进程

SystemServer进程在Android的运行环境中扮演了 “神经中枢” 的做用,APK应用中可以直接交互的大部分系统服务都在该进程中运行, 常见的好比WindowManagerServer ( Wms ) 、
ActivityManagerSystemService (AmS)、PackageManagerServer (PmS) 等,这些系统服务都是以一个线程的方式存在于SystemServer进程中

AMS启动第一个activity的过程。

其实AMS启动第一个activity就是去activity栈中去读取第一个activity,因此用户能够自动的灵活的进行配置。

若是栈中没有activity系统则系统发出 了一个 catagory 字段包含 CATEGORY—HOME的intent。只要用户本身去响应便可。

若是有多个响应,系统会让用户进行选择。

相关文章
相关标签/搜索