应用程序进程启动过程
--摘自《Android进阶解密》
1.AMS在启动应用程序时会检查者应用程序需要的应用进程是否存在,不存在就会请求Zygote进程启动需要的应用程序进程
2.Zygote的Java框架层中会创建一个Server端的Socket,这个Socket用来等待AMS请求Zygote来创建新的应用程序进程
3.Zygote进程通过fock自身创建应用程序进程,这样应用程序进程就会获得Zygote进程在启动时创建的虚拟机实例。当然还创建了Binder线程池和消息循环,这样运行在应用进程中的应用程序就可以方便地使用Binder进行进程间通信以及处理消息了
应用程序进程启动过程
第一步:AMS发送启动应用程序进程请求
第二步:Zygote接收请求并创建应用程序进程
其中:
4.ZygoteInit类的zygoteInit方法会启动Binder线程池
5.将当前线程注册到Binder驱动程序中,这样我们创建的线程就加入了Binder线程池中,新创建的应用程序进程就支持Binder进程间通信了,我们只需要创建当前进程的Binder对象,并将它注册到ServiceManager中就可以实现Binder进程间通信
6.RuntimeInit的invokeStaticMain方法最后会抛出一个MethodAndArgsCaller异常,抓取异常过程中会执行call.run方法,run方法中会调用mMethod.invoke,其实就是ActivityThread的main方法,main方法中开启了消息循环
应用程序进程启动过程相关推荐
- Android应用程序进程启动过程
相关文章 Android系统架构与系统源码目录 Android系统启动流程(一)解析init进程启动过程 Android系统启动流程(二)解析Zygote进程启动过程 Android系统启动流程(三) ...
- android 启动app过程,应用程序进程启动过程
原标题:应用程序进程启动过程 作者:慕涵盛华 链接:https://www.jianshu.com/p/b158615cc2ad 一.背景 首先注意的是:这里要说的是应用程序进程的启动过程,而不是应用 ...
- Android应用程序进程启动过程的源代码分析(1)
Android应用程序框架层创建的应用程序进程具有两个特点,一是进程的入口函数是ActivityThread.main,二是进程天然支持Binder进程间通信机制:这两个特点都是在进程的初始化过程中实 ...
- [日更-2019.4.26、27、28] cm-14.1 Android系统启动过程分析(四)-应用程序进程启动过程...
2019独角兽企业重金招聘Python工程师标准>>> 声明 前阶段在项目中涉及到了Android系统定制任务,Android系统定制前提要知道Android系统是如何启动的: 本文 ...
- cm-14.1 Android系统启动过程分析(8)-应用程序进程启动过程
文章目录 声明 0 写在前面 1 什么应用程序进程? 2 应用程序进程的启动过程 2.1 AMS发送启动应用程序进程请求 2.2 Zygote接收AMS的请求并创建应用程序进程 3 启动线程池 4 创 ...
- Android应用程序进程启动过程的源代码分析(2)
Step 5. ZygoteInit.runSelectLoopMode 这个函数定义在frameworks/base/core/java/com/android/internal ...
- 从源码角度看Android系统SystemServer进程启动过程
SystemServer进程是由Zygote进程fork生成,进程名为system_server,主要用于创建系统服务. 备注:本文将结合Android8.0的源码看SystemServer进程的启动 ...
- 从源码角度看Android系统Zygote进程启动过程
在Android系统中,DVM.ART.应用程序进程和SystemServer进程都是由Zygote进程创建的,因此Zygote又称为"孵化器".它是通过fork的形式来创建应用程 ...
- exe程序的启动过程
学习windows 编程从mfc角度来说可分为两部分那就是WinMain函数以前的,和WinMain函数以后的.前者涉及很多windows操作系统内部的知识,后者么看mfc源码就可以了.虽然大多数程序 ...
最新文章
- 删除单链表中的重复节点(c语言版本)
- mysql数据库项目式教程答案_MySQL数据库项目式教程(高职)
- CentOS7搭建hadoop2.6.4+HBase1.1.6
- 根据企业财务进行风险分析——基于pytorch
- Android 即时通讯开发
- 极佳mysql数据库碎片恢复工具,极佳SQL数据库日志恢复工具
- 金蝶k3cloud安装时,k3cloudmanager没有,该如何处理
- Conflux人物志 | 柠檬树上柠檬果,柠檬树下他和他
- Python模拟登陆强智教务以及使用(持续更新中)
- 微软成功收购雅虎五大理由:可抗衡谷歌
- Oracle10g或Oracle11g完全卸载正确步骤(亲身体验-详细图文教程)
- 【工具】一键制作纯净ROM去除推广APP,支持线刷包卡刷包
- ST M24C01-WDW6TP EEPROM存储器芯片
- Canvas 绘制直线
- redis保护模式的报错
- 二次型化标准形的三种方法
- PDF如何生成电子书分享
- JsonProperty.Access.READ_ONLY 导致查询字段为null
- 遵化市10余个局委办一把手调研九次方大数据,详细部署数字遵化建设
- matlab 画偏振态,光的偏振态分析MATLAB分析