android进程启动流程
来源:互联网 发布:mac air 能玩什么游戏 编辑:程序博客网 时间:2024/06/05 19:59
一、整个android系统的进程启动流程如下:
init进程 –> Zygote进程(有些系统会有Zygote64进程,64bit) –> SystemServer进程 –>各种应用进程
init进程:linux的根进程,android系统是基于linux系统的,因此可以算作是整个android操作系统的第一个进程;在Linux中所有的进程都是由init进程直接或间接fork出来的。
Zygote进程:android系统的根进程,而当init进程创建之后,会fork出一个Zygote进程,这个进程是所有Java进程的父进程; 主要作用:Zygote进程fork出SystemServer进程和各种应用进程。
SystemService进程:Zygote进程fork出来
1)主要作用是启动各种系统服务,比如ActivityManagerService(AMS),PackageManagerService(PMS),WindowManagerService(WMS)服务等;
2)而当我们的应用需要使用各种系统服务的时候其实也是通过与SystemServer进程通讯获取各种服务对象的句柄的进而执行相应的操作的。
3)进程种的各种服务与其他应用交互是通过Binder机制(IPC)通讯的,与Zygote之间交互是通过socket通讯
4)创建的系统服务过程中主要通过SystemServiceManager对象来管理,SystemServer在执行过程中首先会初始化一些系统变量,加载类库,创建Context对象,创建SystemServiceManager对象等之后才开始启动系统服务;
各种应用进程:Zygote进程fork出来
二、Zygote进程启动流程:
init进程在启动Zygote进程时一般都会调用ZygoteInit类的main方法,Zygote进程mian方法主要执行逻辑:
初始化DDMS;
注册Zygote进程的socket通讯;
初始化Zygote中的各种类,资源文件,OpenGL,类库,Text资源等等;
初始化完成之后fork出SystemServer进程;
fork出SystemServer进程之后,关闭socket连接;
三、点击桌面图标启动新进程流程:
当我们点击桌面的APP图标时,Launcher进程会采用Binder的方式向AMS发出startActivity请求
AMS在接收到请求之后,就会通过Socket向Zygote进程发送创建进程的请求
Zygote进程会fork出新的子进程(APP进程)
之后APP进程会再向AMS发起一次请求,AMS收到之后经过一系列的准备工作再回传请求。
APP进程收到AMS返回的请求后,会利用Handler向主线程发送LAUNCH_ACTIVITY消息
主线程在收到消息之后,就创建目标Activity,并回调onCreate()/onStart()/onResume()等方法,UI渲染结束后便可以看到App主界面
阅读全文
0 0
- Android进程启动流程
- android进程启动流程
- Android System进程启动流程
- Android 应用进程启动流程
- Android 应用进程启动流程
- Android 应用进程启动流程
- Android 应用进程启动流程
- android init进程启动的大致流程
- Android app启动一个新进程流程
- com.android.phone进程启动流程
- Android系统进程Zygote启动流程
- Android N Phone进程启动流程
- Android源码(1) --- Zygote进程启动流程
- Android源码(2) --- SystemServer进程启动流程
- Android N Phone进程启动流程
- Android启动流程分析(二) init进程的启动
- 启动进程流程
- linux进程启动流程
- 网易2018校招编程题集合2
- bzoj 1485 [HNOI2009]有趣的数列 卡特兰数
- 【金陵】周总结
- CodeChef AUG17 简要题解
- 2.常用控件:ProgressBar
- android进程启动流程
- 4.在master机器上配置环境变量
- OffsetLeft、offsetTop、offsetWidth、offsetHeight和clientWidth、clientHeight、clientLeft、clientTop的区别:
- LeetCode 371. Sum of Two Integers
- 小C的倍数问题
- 面试百战百答-无线通信专业002-OFDMA
- PHP基础教程-19 If条件判断语句
- 问题 A: 集合运算
- 继承(概念、重写父类方法、super关键字)| final关键字