从桌面和应用内 Activity的启动流程
1.APP还没有被打开过从桌面启动
<1>首先桌面进程会像AMS服务发送startActivity的请求,AMS从system_service中去拿----一次IPC通信
<2>system_service收到请求后通过socket的请求让Zygote进程去fork我们的APP进程
<3>APP进程创建成功后会持有AMS的代理对象ActivityManageProxy,通过这个代理对象发送attach application请求到AMS-----一次IPC通信
<4>AMS再通过ApplicationThreadProxy这个代理对象去让ApplicationThread去启动Activity,
ApplicationThread通过Handler消息让我们的ActivityThread调用handlerLaunchActivity启动Activity执行生命周期。----一次IPC通信 和一次Handler通信 2.应用内启动Activity
<1>实际会走ContentImp去StartActivity--->Instrumentation.execStartActivity方法-->ActivityManager.getService().startActivity 解释下这个ActivityManager.getService()其实就是AMS的代理类
<2>ActivityManagerService.startActivity--->ActivityStarter.startActivityUnchecked ---> 通过AplicationThread的代理类去让ApplicationThread执行这个请求,ApplicationThread又会通过Handler
让ActivityThread去执行startActivity---》Instrumentation.newActivity 创建成功--执行Activity的生命周期。 总结:其实都是通过AMS去启动Activity,而AMS通过IApplicationThread的AIDL接口来使ApplicationThread去真正的执行我们的创建过程。
不同的是从桌面启动的时候是利用进程间通信(Launcher--AMS)--(AMS--Zygote-APP进程)。有这个fork出APP进程的过程。后面的流程是相似的。

从桌面和应用内 Activity的启动流程的更多相关文章
- Android进阶系列之源码分析Activity的启动流程
美女镇楼,辟邪! 源码,是一个程序猿前进路上一个大的而又不得不去翻越障碍,我讨厌源码,看着一大堆.5000多行,要看完得啥时候去了啊.不过做安卓的总有这一天,自从踏上这条不归路,我就认命了.好吧,我慢 ...
- 插件占坑,四大组件动态注册前奏(一) 系统Activity的启动流程
转载请注明出处:http://blog.csdn.net/hejjunlin/article/details/52190050 前言:为什么要了解系统Activity,Service,,BroadCa ...
- Activity的启动流程分析
Activity是Android应用程序的四大组件之中的一个,负责管理Android应用程序的用户界面,一般一个应用程序中包括非常多个Activity,他们可能执行在一个进程中.也可能执行在不同的进程 ...
- 从Activity的启动流程理解Binder
简述 关于Activity启动流程和Binder的文章很多,大多数是分开来讲的,本文将二者结合起来,着重分析启动流程中跨进程方面的细节,其实,启动流程看似调用繁多,主要是复杂在Activity栈管理等 ...
- Activity的启动流程
前言:新启动一个activity分为两种情况,第一种是在Launcher的桌面点击icon图标启动一个新的应用,第二种是在应用启动的情况下从OneActivity->TwoActivity 其实 ...
- 《转》深入理解Activity启动流程(四)–Activity Task的调度算法
本文原创作者:Cloud Chou. 出处:本文链接 本系列博客将详细阐述Activity的启动流程,这些博客基于Cm 10.1源码研究. 深入理解Activity启动流程(一)--Activity启 ...
- 《转》深入理解Activity启动流程(三)–Activity启动的详细流程2
本文原创作者:Cloud Chou. 出处:本文链接 本系列博客将详细阐述Activity的启动流程,这些博客基于Cm 10.1源码研究. 深入理解Activity启动流程(一)--Activity启 ...
- 《转》深入理解Activity启动流程(二)–Activity启动相关类的类图
本文原创作者:Cloud Chou. 出处:本文链接 本系列博客将详细阐述Activity的启动流程,这些博客基于Cm 10.1源码研究. 在介绍Activity的详细启动流程之前,先为大家介绍Act ...
- 深入理解Activity启动流程(四)–Activity Task的调度算法
本系列博客将详细阐述Activity的启动流程,这些博客基于Cm 10.1源码研究. 深入理解Activity启动流程(一)--Activity启动的概要流程 深入理解Activity启动流程(二)- ...
- 深入理解Activity启动流程(三)–Activity启动的详细流程2
本文原创作者:Cloud Chou. 欢迎转载,请注明出处和本文链接 本系列博客将详细阐述Activity的启动流程,这些博客基于Cm 10.1源码研究. 深入理解Activity启动流程(一)--A ...
随机推荐
- vscode 远程服务器同步
1.下载 sftp 2. 在项目目录下新建sftp.json文件 3. 编辑sftp.json文件 { "name": "My Server", "h ...
- 十大经典排序之快速排序(C++实现)
快速排序 通过一趟排序将待排序列分割成两部分,其中一部分记录的关键字均比另一部分记录的关键字小.之后分别对这两部分记录继续进行排序,以达到整个序列有序的目的. 思路: (1)选择基准:从数列中挑出一个 ...
- python——numpy
NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库. import numpy a = num ...
- 【Unity】拖动图片生成对应Image
写在前面 拼UI时会用到多个Image,一般操作是:①新建一个Image,②拖入Image用到的图片,③SetNativeSize,④关闭不必要的raycastTarget .为了能尽快拼完UI,我写 ...
- git命令2
git status git status -s git diff git diff --cached --添加到暂存区成为快照 git add -A git add . --删除被git追踪的文件 ...
- 双调排序--GPU/AIPU适合的排序【转载】
欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld 技术交流QQ群:433250724,欢迎对算法.技术.应用感兴趣的同学加入 双调排序是data-indepen ...
- CV入坑
https://www.cnblogs.com/fldev/p/14360149.html
- C++ 几款IDE和编程平台的选择分析
最近闲来无事,就研究了一下几个编程平台和IDE.首先,我必须强调一下,这些方案研究并不一定适用于商业公司内部编程平台选择,而是给个人学习或者闲暇之余把玩用的.主要从以下几个指标考量:使用体验.跨平台. ...
- 创建function函数sys_guid时报错
创建function函数sys_guid时报错 执行下面的命令 show variables like 'log_bin_trust_function_creators';set global log ...
- unidbgrid按回车键切换到右侧CELL
打开UniDBGrid的ClientEvents->ExtEvents属性,编辑Ext.grid.Panel的reconfig函数,输入如下代码就可以实现当UniDBGrid表格的ReadOnl ...