位置: 编程技术 - 正文

Android 初始化之Zygote(安卓初始化)

编辑:rootadmin
系统整体框架

推荐整理分享Android 初始化之Zygote(安卓初始化),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:安卓初始化失败,安卓手机初始化后能变快吗,安卓手机app初始化失败怎么办,安卓手机初始化在哪里,android初始化控件的方法,安卓初始化,android中初始化sharedpreferences,安卓初始化,内容如对您有帮助,希望把文章链接给更多的朋友!

了解android初始化之前,有必要了解一下系统的整体框架,下图是网上流传比较经典的架构图:

android的启动主要是linux内核启动之后,init进程来接手Android的初始化,完成后续一些服务和应用的启动,所有上层的应用和服务都依赖Dalvik VM,所以

Android  初始化之Zygote(安卓初始化)

该虚拟机应用该在所有应用启动之前完成初始化。

Zygote初始化zygote进程实际上就是app_process进程,在init 进程的启动脚本中声明另外zygote进程启动之后,会创建一个名为zygote的socket 来进程间通信,zygote 启动之后作为后台的守护进程一直等待其它应用或者服务的启动请求。下图就是zygote启动大致流程,启动之后就创建dalvik vm ,接着systemserver 被启动,后面所有的系统服务进程都被systemserver启动,其实systemserver也是一个比较重要的服务(SystemServer.java) ,添加一些平台级服务一般在此处添加,随着AMS的启动,launcher也被启动了。

Zygote的工作流程ZygoteInit的启动app_process(app_main.cpp)会创建AppRuntime,接着启动,zygoteInit 通过runtime.start("com.android.internal.os.ZygoteInit", args)启动zygoteInitzygoteInit主逻辑从中我们可以发现,在registerZygoteSocket中创建一个“zygote” 的LocalServerSocket 给ZygoteConnection等待用户请求,而runSelectLoop就是等待应用层发来的启动请求事件 其中selectReadable(com_android_internal_os_ZygoteInit.cpp)是一个native函数,调用select等待客户端连接,一旦连接上就会返回,< 0 内部连接错误,= 0 第一次连接成功,> 0 表示已经建立连接,可以直接发送数据。第一连接成功之后,就会创建客户端连接对象ZygoteConnection,并添加至peers列表中。接收到请求之后,就要为这些请求创建子进程, peers.get(index).runOnce(),也即子进程的孵化。进程的孵化 peers.get(index).runOnce()来开启子进程的孵化,ZygoteConnection.runOnce Zygote.forkAndSpecialize会调用native方法nativeForkAndSpecialize通过linux fork 来创建进程,handleChildProc和handleParentProc分别处理子进程,父进程。 而执行子进程又分两种方式WrapperInit.execApplication,RuntimeInit.zygoteInit, 其中execApplication 接着zygote.execShell 通过shell来执行启动指令 而zygoteInit则又是另一条路 RuntimeInit.java中zygoteInit会继续向下call applicationInit invokeStaticMain 就会最终call 到应用或者服务的main函数,这样就完成了整个创建的流程,后面分析应用的请求流程。应用请求流程应用一般都是以startActivity方式来启动最后执行到ActivityManagerService.startProcessLockedprocess.start函数 startViaZygote中Process 会通过内部类ZygoteState 与 Zygote守护进程通信,通过“Zygote” socket 将启动应用的参数传给 服务端,在runSelectLoopMode ( select loop)收到请求就开始启动应用进程 openZygoteSocketIfNeeded会判断是否与 服务端进程通过 “zygote” socket 进行连接通信 zygoteSendArgsAndGetResult完成启动参数消息的发送,并获取最终结果zygote相关链接文档:

版权声明:本文为博主原创文章,未经博主允许不得转载。

android FileNotFoundException(Is a Directory)解决办法 最近公司项目要求把从服务器读取的图片存到本地SD卡中,一开始以为很轻松啊,听着小曲,看着视频,敲着代码,这小资生活。。。。咳咳,扯远了,

Android Studio使用技巧系列教程(一) 尊重劳动成果,转载请注明出处:

eclipse 编辑窗口不见了(打开左边的java、xml文件,中间不会显示代码) 1.windows--resetPerspective窗口--重置窗口布局要是不行,就用第二种2.windows-newwindows新窗口当时手贱了一下,结果编辑窗口出不来,重启了也没用,当时懵了~

标签: 安卓初始化

本文链接地址:https://www.jiuchutong.com/biancheng/380966.html 转载请保留说明!

上一篇:Android 编程下 Touch 事件的分发和响应机制(安卓编程视频教程)

下一篇:android FileNotFoundException(Is a Directory)解决办法

  • 所得税的会计分录怎么做
  • 建筑业固定资产折旧费用科目是什么
  • 季节性临时工是不是可以不上社保
  • 四川网上电子税务局
  • 待抵扣进项税额转出会计分录
  • 公司现金支付管理办法
  • 外商投资企业国内上市最新政策
  • 公司为员工异地调岗
  • 事业单位开展活动的意义
  • 软件入库会计分录
  • 商业承兑到期对方不付款如何起诉
  • 违约金抵扣货款等于现金折扣吗会计分录
  • 房屋建筑物评估技术鉴定表
  • 工程款发票备注栏项目名称
  • 红包营销活动方案
  • 医院行业类别怎样填写
  • 研发费用的扣除比例是多少
  • 企业合作开发的研发费怎样加计扣除?
  • 主营业务收入和其他业务收入的区别
  • 进项已抵扣怎么申报
  • 如何代开外籍人员个人所得税完税凭证?
  • 公允价值与计税价值区别
  • 技术服务的大类包括
  • 资本性支出计算公式为什么加折旧
  • 预交土地增值税怎么计算的
  • win7为什么这么多人用
  • pcas service进程可以关闭么
  • service5.exe - service5是什么进程 有什么用
  • 合作社实际没有自产自销,但税务方面怎么可以提供证明
  • 从价计征房产税如何计算
  • 记账凭证账务处理步骤
  • 增值税专用发票有几联?
  • 建筑安装企业核定征收企业所得税
  • 工业企业采购供应管理
  • 详解中国女足出线形势
  • php rsa
  • php异步请求方式
  • 分公司注销,总公司账务处理
  • 小企业会计准则和一般企业会计准则的区别
  • php获取本机ip地址
  • thinkphp框架入门
  • 发票内容服务费可以吗?没有明细
  • 进货退出进项税额的核算
  • 富文本功能
  • phpcms程序
  • 详解PostgreSQL 语法中关键字的添加
  • 现金折扣如何核算
  • 个人独资企业法主要内容
  • 建筑行业 营改增
  • 工会经费余额在借方还是贷方
  • 最新出口退税申报需要哪些资料
  • 买方的现金折扣会计分录
  • 产品的质量监督部门是指
  • 预付账款转入其他应付款会计分录
  • 制造费用包括哪些内容科目
  • 航天信息服务费发票哪里打印
  • 月度资金预算怎么填
  • 应付职工薪酬账户贷方登记的是
  • 高新技术企业认定条件
  • 残保金是公司交还是员工交
  • 新会计准则2019待摊费用
  • win8.1无法连接无线网
  • centos 管理员
  • 桌面快捷方式不显示图标怎么办
  • 只需2招 让Win10运行速度更加迅速
  • windows8.1玩穿越火线
  • cocos2dx小游戏
  • 使用jquery操作dom
  • 不用js多浏览器能用吗
  • unity引擎用什么模拟器
  • jquery序列化json
  • 'tools.jar' seems to be not in Android Studio classpath. Please ensure JAVA_HOME points to JDK rathe
  • 简述jQuery ajax的执行顺序
  • jQuery插件ajaxFileUpload异步上传文件
  • 骨骼动画spine
  • bootstrap和css的关系
  • 北京病退流程
  • 山东网上信访投诉平台
  • 生产企业税点
  • 税务征管科与纳税人有接触吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设