1. 点击App图标,Launcher进程采用Binder IPC向system_server进程发起startActivity请求
  2. system_server收到请求后,向Zygote进程发送创建进程的请求
  3. Zygote进程fork出新的子进程,即App进程
  4. App进程创建出来后,通过Binder IPC向system_server发起attachApplication请求
  5. system_server收到请求后,进行一系列的准备工作,再通过bind IPC向App进程发送scheduleLaunchActivity请求
  6. App进程的binder线程(ApplicationThread)在收到请求后,通过handler向主线程发送LAUNCH_ACTIVITY消息
  7. 主线程收到message后,通过发射机制创建目标Activity,并回调Activity.onCreate()等方法
  8. App开始正式启动,正式进入Activity生命周期,执行完一系列的生命周期方法,UI渲染,然后就可以看到主界面了

【通俗的讲】

  1. 当你点击App图标的时候,你就要告诉系统,“嗨,伙计,我要启动这个哥们了”,我们知道进程间通信大多数是用的Binder机制,就相当于你告诉服务器,我要发起一个请求了啊
  2. 这个服务小弟(系统服务)收到消息后,“那我得去向老大说一下这边想创建个进程出来”,即向孵化器发送请求
  3. 老大(孵化器)听到后,“可以啊,来吧,我给你创建出来,记着到时候去咱们的系统里面做个备案记录下”
  4. 创建出来后,App创建出来后,要去服务小弟那里根据自己的情况,根据自己的情况去工商局办理营业执照(这就是平时我们应用中做一些先做的东西需要在Application中的原因)
  5. 服务小弟(系统服务)去做好记录后,就去叫这个进程起床干活了
  6. App被叫醒后,先送个指令,我得先去洗个脸画个妆
  7. 大脑收到指令后,就走过去那些瓶瓶罐罐的
  8. 然后开始化妆,弄完后出门,就让人看到了

Zygote

  “受精卵”,更倾向于叫孵化器,是由linux的init进程fork出来的,而为了实现资源共享和更快的启动速度,之后所有的进程全都又第一个zygote fork出来

system_server

也是一个进程,所以也是由zygote进程fork出来的,这个从名字也可以看出来是系统级的服务,系统里面的一些重要服务都是在这个进程开启的,像AMS,PMS,WMS

ActivityManagerService

简称AMS,服务端对象,负责系统中所有Activity的生命周期,ams进行初始化的时机非常明确,就是SystemServer进行开启的时候初始化

Launcher

本质上也是一个应用程序,跟普通的App一样,也是继承Activity

 

 

更多相关文章

  1. Android(安卓)自定义 dialog
  2. Android中的签名
  3. 请求网络数据后更新视图
  4. Android(安卓)Binder 驱动 - 内核驱动层源码分析
  5. 查看Android设备给每个应用分配的内存大小
  6. Android(安卓)应用退出后销毁apk进程
  7. java.io.IOException: Cleartext HTTP traffic to xxx.xxx.xxx.x
  8. android中的dialog
  9. Android(安卓)Gems — AMS的Service生命周期管理

随机推荐

  1. Windows配置Android SDK环境
  2. Android实机调试出现“您的手机未安装此
  3. Android App开发基础篇—四大组件之Activ
  4. android 手机logo 的设置
  5. 用activity实现半透明的、淡入的menu
  6. android音频基础与SoundPool
  7. Android 4.4 Kitkat 使能 USB adb 功能
  8. Android(安卓)Studio 4.1 更新内容
  9. Android后端的项目创建流程(IDEA2020 + To
  10. blcr加速android启动速度遇到的问题及解