资讯 小学 初中 高中 语言 会计职称 学历提升 法考 计算机考试 医护考试 建工考试 教育百科
栏目分类:
子分类:
返回
空麓网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
空麓网 > 计算机考试 > 软件开发 > 后端开发 > Java

AMS启动流程简易版

Java 更新时间: 发布时间: 计算机考试归档 最新发布

AMS启动流程简易版

首先我们要了解zygote是什么

zygote是java进程鼻祖 :分为native层 和 java层

native 层做了些什么

     1、初始化android

     2、注册jni

     3、执行ZygoteInit.main,进入java层

java层做了什么

     1、创建socket--

    2、执行预加载--

    3、通过fork创建SystemServer进程--

    4、进入循环:等待AMS的通知,创建对应进程

ZygoteInit

1、进入main函数通过fork创建进程(frokSystemServer)

,通过反射执行SystemServer的main方法

进程有两个

  • 父进程 Zygote进程

    假如SystemServer的进程id是6000

    Zygote的pid就是6000 返回值等于子id

    SystemServer的pid就是0 没有子id就为0

  • 子进程 SystemServer

2、初始化zygote(调用底层)

执行SystemServer的mai方法

SystemServer

进入main函数

1、创建系统上下文
  • 创建一个ActivityThread线程
  • 执行attach函数
  • 创建SystemContext()
  • 创建app(反射创建)
  • 执行Application.onCreate();

2、创建系统服务
  • 创建服务(服务继承SystemService)
  • 启动服务

3、启动引导服务(AMS)
  • 启动ATMS(android10新增)

  • 启动AMS

    • 创建AMS,管理ATMS

    • 启动AMS

    • systemReady(AMS准备好)

    • 启动Activity

    • 两步检查(startSpecifiaActivity)

      • 存在

        • 添加事务

        • 分发事务

        • ActivityThread分发事务

        • Handler分发消息

        • execute(执行)

        • handleLaunchActivity (处理消息,启动Acitivity)

        • performLaunchActivity

          执行Activity的onCreate

      • 不存在

        • 创建进程
        • 进程启动
        • 启动zygote
        • 创建socket
        • 连接socket
        • 进入zygote
        • 循环等待,有消息,启动app进程
        • 反射执行ActivityThread.main方法
        • attachApplication(ApplicationThread,binder通信)
        • realStartActivityLocked(真正启动)

4、启动核心服务(基本应用层用不上)

5、启动其它服务(WMS)

转载请注明:文章转载自 http://www.konglu.com/
本文地址:http://www.konglu.com/it/1023586.html
免责声明:

我们致力于保护作者版权,注重分享,被刊用文章【AMS启动流程简易版】因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,转载此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!

我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2023 成都空麓科技有限公司

ICP备案号:蜀ICP备2023000828号-2