①点击桌面App图标,Launcher进程采用Binder IPC向system_server进程发起startActivity请求;

②system_server进程接收到请求后,向zygote进程发送创建进程的请求;

③Zygote进程fork出新的子进程,即App进程;

④App进程,通过Binder IPC向sytem_server进程发起attachApplication请求;

⑤system_server进程在收到请求后,进行一系列准备工作后,再通过binder IPC向App进程发送scheduleLaunchActivity请求;

⑥App进程的binder线程(ApplicationThread)在收到请求后,通过handler向主线程发送LAUNCH_ACTIVITY消息;

⑦主线程在收到Message后,通过发射机制创建目标Activity,并回调Activity.onCreate()等方法。

⑧到此,App便正式启动,开始进入Activity生命周期,执行完onCreate/onStart/onResume方法,UI渲染结束后便可以看到App的主界面。

详细参考:https://github.com/LRH1993/android_interview/blob/master/android/advance/app-launch.md

最新文章

  1. CSS 3 学习——transform 3D转换渲染
  2. [OSG]OSG例子程序简介
  3. vps主机修改系统远程端口号/添加防火墙
  4. [转]不再以讹传讹,GET和POST的真正区别
  5. 电赛菜鸟营培训(二)——STM32F103CB之中断控制
  6. 报错总结_java.lang.RuntimeException: Invalid action class configuration that references an unknown class name
  7. c语言字符串大小写字母转换
  8. ArcGis:vs c#编程遇到问题The specified filename is invalid
  9. [Cache] C#操作缓存--CacheHelper缓存帮助类 (转载)
  10. Java基础加强学习笔记(二)
  11. sql执行顺序整理
  12. windows平台下node,npm,gulp配置
  13. github 项目绑定自己的域名
  14. Implement heap using Java
  15. Java基础——Instanceof 运算符
  16. 理解npm run
  17. 安装yii2 需要token 记录
  18. [转] node.js下mongoose简单操作实例
  19. Luogu1979 NOIP2013D2T3 华容道 搜索、最短路
  20. N! java

热门文章

  1. hdu4310 贪心
  2. Redis源码解析:10scan类命令的实现
  3. Vue电商后台管理系统项目第1天-基本环境搭建&登录功能
  4. oracle函数 INTERVAL c1 set1
  5. @bzoj - 2388@ 旅行规划
  6. day6_python之json序列化和反序列化
  7. Lists and keys
  8. angularjs 自定义指令弹窗
  9. Android Studio(十):添加assets目录
  10. H3C 网络号和主机号