Android系统启动杂谈
来源:互联网 发布:宝宝生长曲线软件 编辑:程序博客网 时间:2024/06/07 07:10
Zygote:所有的应用程序进程以及系统服务进程SystemServer都是Zygote fork(孕育)出来。
Zygote本意受精卵。
android本身是一个linux内核的系统。
linux第一个进程是启动init,init启动后读取init.rc文件的定义,并启动app_process。
启动程序之后重命名为zygote。
zygote程序加载ZygoteInit中的main函数,最终调用fork SystemServer,执行init的fork方法创建了SystemServer进程。
ActivityManagerService启动程序,调用的是Pocess.start方法来创建进程。通信过程采用Binder。
Binder采用CS架构,Binder总体分为三个部分。JVM,C++,linux中的Binder块设备。
通信方式,JVM把数据进行序列化传递到C++,C++将数据写入linuxBinder的块设备,然后接受Server端的请求,请求完毕按照原路返回给调用端。
Launcher启动Activity,ActivityManagerServer创建ActivityRecored把它加入这个历史纪录列表里。
Zygote就开始启动应用进程,进程启动后会取得Server的Binder,建立通讯。建立通信后,Server调度Activity执行ScheduleLaunchActivity等操作启动Activity。
ScheduleLaunchActivity本身会对appContext Configuration这些进行配置,attach。
阅读全文
0 0
- Android系统启动杂谈
- Android 系统启动
- Android系统启动
- Android系统启动
- Android 系统启动
- Android系统启动
- android杂谈
- Android杂谈
- Android 杂谈
- Android 杂谈
- 【Android】杂谈
- Android杂谈
- Android 杂谈
- android杂谈
- Android杂谈
- Android系统启动流程 -- android
- Android系统启动流程 -- android
- Android系统启动流程 -- android
- 推荐 | 值得加入的AI公司不只有BAT、FLAG与TMDJ,还有这些!!!
- C/C++ GBK2312转Unicode
- React 组件间的通信
- 【关于数组两种使用的思考】C语言中用map函数和广搜解决八数码问题(noj1571)
- D-KSVD(Discrimination K-SVD)
- Android系统启动杂谈
- 比特币挖矿——集群矿池btcpool
- 微信公号“架构师之路”学习笔记(四)-分布式ID生成算法(应用场景、uuid/guid、snowflake算法)
- 运算符重载详解
- path与classpath区别
- 深入理解Java:SimpleDateFormat安全的时间格式化
- bzoj 1257 [CQOI2007]余数之和sum 数学,分段优化
- 区块链来了:未来注定颠覆我们的生活
- JAVA远程(ssh)执行linux脚本