zoukankan      html  css  js  c++  java
  • 安卓运行环境(四)

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

    Linux系统中运行的第一个Dalvik虚拟机程序叫做zygote,接下来的所有Dalvik虚拟机进程都是通过这个“ 卵” 孵化出来的。

     zygote进程

     包含两个主要模块

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

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

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

      SystemServer中创建了一个Socket客户端,并有AmS负责管理该客户端,之后所有的Dalvik进程都将通过该Socket客户端间接被启动

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

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

     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。只要用户自己去响应即可。

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

  • 相关阅读:
    让层遮挡select(ie6下的问题)
    HTTP协议详解(真的很经典)
    网络编辑基础:对HTTP协议的头信息详解
    (OK) MIMP
    (OK) MIMP
    (OK) MIMP
    (OK)(OK) Android-x86-7.1.1/ kernel 4.4.62
    (OK)(OK) Android-x86-7.1.1/ kernel 4.4.62
    (OK) Android-x86-7.1.1/ kernel 4.4.62
    (OK)(OK) Android-x86-7.1.1/ kernel 4.4.62
  • 原文地址:https://www.cnblogs.com/sunfan1988/p/4377435.html
Copyright © 2011-2022 走看看