一张图概括App启动流程
一、神图:
二、说明
笔者在下面博文内容的基础上,加上自己的理解,对图片稍加了一点点修改,启动流程文字部分也有所修改
参考:http://www.sohu.com/a/130814934_675634 (感谢楼主)
三、启动流程:
①点击桌面App图标,Launcher进程采用Binder IPC向system_server进程发起startActivity请求;(startActivity()中调用ActivityManagerProxy.startActivity(),最终通过Binder执行system_server进程中的AMS中的startActivity()函数)
②system_server进程接收到请求后,向zygote进程发送创建进程的请求;(这一步AMS中startActivity()里面会调用startProcessLocked()函数,最终之行Process.start()函数,其最终调用了Zygote并通过socket通信的方式让Zygote进程fork除了一个新的进程,并根据我们刚刚传递的”android.app.ActivityThread”字符串,反射出该对象并执行ActivityThread的main方法)。
③Zygote进程fork出新的子进程,即App进程;
④App进程,通过Binder IPC向sytem_server进程发起attachApplication请求;(ActivityThread的main()函数里面会创建ActivityThread对象并调用attach()函数
ActivityThread thread = new ActivityThread();
thread.attach(false);
//attach()中调用ActivityManagerProxy的attachApplication(),也就是最终通过Binder机制调用了ActivityManagerService的attachApplication
⑤system_server进程在收到请求后,进行一系列准备工作后,再通过binder IPC向App进程发送scheduleLaunchActivity请求;
⑥App进程的binder线程(ApplicationThread)在收到请求后,通过handler(ActivityThread.H)向主线程发送LAUNCH_ACTIVITY消息;
⑦主线程在收到Message后,通过发射机制创建目标Activity,并回调Activity.onCreate()等方法。(performLaunchActivity() 通过classLoader(通过LoadedApk对象来获取)加载类,然后通过反射生成对象,最后回调Activity.onCreate()等方法)
⑧到此,App便正式启动,开始进入Activity生命周期,执行完onCreate/onStart/onResume方法,UI渲染结束后便可以看到App的主界面。
一张图概括App启动流程相关推荐
- 两张图概括struts2执行流程核心(经典)
转载于:https://www.cnblogs.com/xyhero/p/9348748.html
- Android App启动流程详解
前言:在之前的文章中已经写了apk的打包流程.安装流程,今天就是梳理一下apk系列的最后的流程--app启动流程.经过今天的梳理以后咱们就可以对apk包是怎么编译生成的.apk是怎么被安装到安卓手机的 ...
- android源码学习- APP启动流程(android12源码)
前言: 百度一搜能找到很多讲APP启动流程的,但是往往要么就是太老旧(还是基于android6去分析的),要么就是不全(往往只讲了整个流程的一小部分).所以我结合网上现有的文章,以及源码的阅读和调试, ...
- 数据结构与算法01:一张图概括【数据结构】是什么?(大白话+图解)
大白话+图解,数据结构到底是什么? 数据结构:数据结构(data structure)描述的是按照一定逻辑关系组织起来的待处理数据元素的表示及相关操作,涉及数据的逻辑结构.数据的存储结构和数据的运算. ...
- 一张图概括编程语言发展史
一张图概括编程语言发展史 一张图概括编程语言发展史 一张图 编年史 一张图 编程语言是一组用来定义计算机程序的语法规则.它是一种被标准化的交流语言,用来向计算机发出指令.一种计算机语言让程序员能够准确 ...
- Android入门之APP启动流程
俗话说,要想优化好,流程不可少.作为一款App的开发者,首先要把它的启动流程做好了,简单明了的启动流程不仅拥有很好的体验感,还能获得更多用户对App的肯定.本篇文章就带大家了解下app启动流程的三个进 ...
- APP启动流程:从点击应用图标到Activity启动流程
app启动流程: ①点击桌面App图标,Launcher进程采用Binder IPC向system_server进程发起startActivity请求: ②system_server进程接收到请求后判 ...
- 【线上沙龙直播报名】App 启动流程详解及其优化
点击上方"公众号"可以订阅哦 [美团点评技术沙龙Online]是美团点评技术团队推出的线上分享课程,每月2-3期,采用目前最火热的线上直播形式,邀请美团点评技术专家,面向互联网技术 ...
- 一个APP从启动到主页面显示经历了哪些过程?(App启动流程,从点击桌面开始)
本文以图文并茂的形式简单介绍一个APP从启动到主页面显示经历了哪些流程,以及实现的原理.不介绍具体源码,仅仅构建一个大体框架. 原地址链接:http://www.jianshu.com/p/a72c5 ...
- android app启动流程分析,Android应用开发之Android 7.0 Launcher3的启动和加载流程分析...
本文将带你了解Android应用开发Android 7.0 Launcher3的启动和加载流程分析,希望本文对大家学Android有所帮助. Android 7.0 Launcher3的启动和加载流程 ...
最新文章
- HDU 5289 Assignment(单调队列)
- MySQL中的索引(主键索引)
- Qt之创建并使用共享库
- Robot Cleaner I
- python函数手册_python学习手册——内置函数(上)
- linux中top性能分析工具中的TIME+
- 聊聊内卷之下,直博和读完硕士再读博该怎么选择?
- java 加密_Java版SMS4加密解密算法
- android stepview 京东,Android-Android-OpenAPI SDK-帮助文档-京东云
- 开课吧python小课学了有用吗-好消息!今天,审计、会计、税务、财务主管彻底沸腾了……...
- linux下组管理命令详解
- oracle四大索引类型,oracle 索引类型
- 微信小程序-TabBar用法
- 使用Webupload上传图片到FastDFS分布式文件系统
- 佩服的一个阿里 P9 大佬,离职了...
- Deep Depth Completion of a Single RGB-D Image(深度像素补全)全文机器翻译
- 基于php的网络教学平台,基于PHP技术的网络教学平台的设计与实现
- 解决www.coursera.org可以登录但无法播放视频
- 房地产术语,住宅类型:公寓、其它、别墅、四合院、平房、排屋、新里洋房、普通住宅、暂无数据、老公房、酒店公寓 写字楼类型:写字楼、创意园区、商业综合体、商业街、商住楼、酒店写字楼...
- WhatsApp客服系统,为什么使用SendWS拓客系统实现WhatsApp客服系统多账号管理?