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

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

  • 相关阅读:
    RESTful API 设计指南
    理解RESTful架构
    VS2012打开Web项目提示《ASP.NET 4.X 尚未在Web服务器上注册。你需要手动将...》解决方案
    css样式float造成的浮动“塌陷”问题的解决办法
    WebBrowser控件默认使用IE9,IE10的方法
    强制IE浏览器或WebBrowser控件使用指定版本显示网页
    C# 模拟键盘操作--SendKey(),SendKeys()
    《深入理解 OpenStack Neutron》- 发展和虚拟化
    极客时间 《mysql实战45讲》
    mysql 三大块 事务 索引 锁
  • 原文地址:https://www.cnblogs.com/sunfan1988/p/4377435.html
Copyright © 2011-2022 走看看