Activity启动过程

Launcher启动MainActivity的过程主要分为6个步骤:

一、Launcher向ActivityManagerService发送一个启动MainActivity的进程间通信请求;

二、ActivityManagerService首先将MainActivity的信息保存下来,再向Launcher组件发送一个进入中止状态的进程间通信请求;

三、Launcher进入中止状态后,向ActivityManagerService发送一个已经进入中止状态的进程间通信请求;

四、ActivityManagerService启动一个新的应用程序进程

五、新的进程启动完毕,ActivityManagerService发送一个启动完成的进程间通信请求到ActivityThread;

六、ActivityThread将MainActivity组件启动起来。

子Activity在进程内启动过程

一、MainActivity向ActivityManagerService发送一个启动SubActivity进程间通信请求;

二、ActivityManagerService保存SubActivity组件信息,再向MainActivity发送进入中止状态的进程间通信请求;

三、MainActivity进入中止状态,并将状态返回给ActivityManagerService;

四、ActivityManagerService将SubActivity保存的组件发送给应用程序,将SubActivity启动起来。

一个Activity组件是在已经存在的应用程序进程中启动,还是在新的应用程序进程中启动,取决于以下两个因素:

Activity组件的的用户ID;

Activity组件的android:process属性。

Task用来将一系列相关的Activity组件整合到一起,共同完成一个业务功能。这些Activity可以在不同的进程中,这使得Activity组件的重用性强。

以上内容阅读《Android系统源代码情景分析》第7章《Activity组件的启动过程》总结。

Android源码——Activity组件的启动过程的更多相关文章

  1. tomcat8 源码分析 | 组件及启动过程

    tomcat 8 源码分析 ,本文主要讲解tomcat拥有哪些组件,容器,又是如何启动的 推荐访问我的个人网站,排版更好看呦: https://chenmingyu.top/tomcat-source ...

  2. Android源码——Activity进程内启动

    进程内启动Activity MainActivity组件向ActivityManagerService发送一个启动SubActivityInProcess组件的进程间通信请求: ActivityMan ...

  3. Android Activity组件的启动过程

    0.总图 1.总图中的第一步,Laucher主线程向ActivityManagerService进程发出START_ACTIVITY_TRANSACTION 如图:第一步 ~/Android/fram ...

  4. Spring源码系列——容器的启动过程(一)

    一. 前言 Spring家族特别庞大,对于开发人员而言,要想全面征服Spring家族,得花费不少的力气.俗话说,打蛇打七寸,那么Spring家族的"七寸"是什么呢?我心目中的答案一 ...

  5. Netty源码解析 -- 服务端启动过程

    本文通过阅读Netty源码,解析Netty服务端启动过程. 源码分析基于Netty 4.1 Netty是一个高性能的网络通信框架,支持NIO,OIO等多种IO模式.通常,我们都是使用NIO模式,该系列 ...

  6. Netty源码分析之客户端启动过程

    一.先来看一下客户端示例代码. public class NettyClientTest { public void connect(int port, String host) throws Exc ...

  7. Fabric1.4源码解析: 链码容器启动过程

    想写点东西记录一下最近看的一些Fabric源码,本文使用的是fabric1.4的版本,所以对于其他版本的fabric,内容可能会有所不同. 本文想针对Fabric中链码容器的启动过程进行源码的解析.这 ...

  8. Spring源码解析-Web容器启动过程

    Web容器启动过程,主要讲解Servlet和Spring容器结合的内容. 流程图如下: Web容器启动的Root Context是有ContextLoaderListener,一般使用spring,都 ...

  9. wxWidgets源码分析(1) - App启动过程

    目录 APP启动过程 wxApp入口定义 wxApp实例化准备 wxApp的实例化 wxApp运行 总结 APP启动过程 本文主要介绍wxWidgets应用程序的启动过程,从app.cpp入手. wx ...

随机推荐

  1. elasticsearch高级配置二----线程池设置

    一个Elasticsearch节点会有多个线程池,但重要的是下面四个: 索引(index):主要是索引数据和删除数据操作(默认是cached类型) 搜索(search):主要是获取,统计和搜索操作(默 ...

  2. iOS 汉字的拼音

    获取汉字的拼音 #import <Foundation/Foundation.h> @interface NSString (Utils) /** * 汉字的拼音 * * @return ...

  3. Linux命令-文件文本操作grep

    文件文本操作 grep 在文件中查找符合正则表达式条件的文本行 cut 截取文件中的特定字段 paste 附加字段 tr 字符转换或压缩 sort 调整文本行的顺序,使其符合特定准则 uniq 找出重 ...

  4. 深入理解SQL注入绕过WAF和过滤机制

    知己知彼,百战不殆 --孙子兵法 [目录] 0x0 前言 0x1 WAF的常见特征 0x2 绕过WAF的方法 0x3 SQLi Filter的实现及Evasion 0x4 延伸及测试向量示例 0x5 ...

  5. ClassNotFoundException超限

    错误日志图 被这弱智的错误吭了半个小时,项目本来好好的,然后因为改版加了很多东西,所以就超限了,一开始总是报下面那图的错,搞的我总以为是retrofit的错,但是好好的框架而且没改过,怎么可能会出错呢 ...

  6. 初试WIX加SQL LocalDB

    最近有个项目需要生成一个自动打包安装App和数据库的MSI文件,经同事推荐WIX,于是乎就试了一试.遇到了一些问题觉得有分享的价值,所以写篇博客记录一下 :) 使用感觉: WIX特点:功能很强大,用X ...

  7. Java文件中出现这样的提示错误与解决方法:Cannot return from outside a function or method?

    1.打开  >>  Myeclipse或Eclipse.(我使用的是Myeclipse) 2.打开  >>  Window  >>  Preferences  如图 ...

  8. MySQL优化一例

    DELIMITER $$ USE `xxx`$$ DROP FUNCTION IF EXISTS `F_getBuluDates`$$ CREATE DEFINER=`root`@`localhost ...

  9. C#相关开发视频

    Quickly Generate C# Classes from JSON Responses .NET Compiler Platform ("Roslyn") for the ...

  10. Dubbo学习之简单环境搭建

    Dubbo服务的发展和作用: 首先,看下一般网站架构随着业务的发展,逻辑越来越复杂,数据量越来越大,交互越来越多之后的常规方案演进历程. 其次,当服务越来越多之后,我们需要做哪些服务治理? 最后,是d ...