Activity组件的启动过程

最近在学习Activity的组件过程,在这里把过程写一遍,当作记忆,如果想看时序图或者源码的,可以网上另找。

Laucher组件启动程序中MainActivity组件的过程:

(1)Laucher组件向ActivityManagerService发送一个启动MainActivity组件的进程间通信。

(2)ActivityManagerService首先将要启动的MainActivity组件的intent信息保存起来,同时向Laucher组件发送一个进入中止状态的进程间通信请求。

(3)Laucher组件进入到中止状态后,就会向ActivityManagerService发送一个已进入中止状态的进程间通信请求,ActivityMangerService在收到中止状态的进程间通信请求后,把消息移除,并在mHistroy里同步Laucher组件的状态,接着就可以执行启动MainActivity组件的操作。

(4)ActivityManagerService发现用来运行MainActivity组件的进程不存在就会先启动一个新的应用进程。

(5)新的进程启动完后,就向AcitvityManagerService发送一个进程启动完成的请求。

(6)ActivityManagerService将第2步保存下来的intent消息发给刚启动的进程,以便启动MainActivity组件,这里还涉及到activity组件在ActivityManagerService的状态保存。

MainActivity组件启动同个进程下的activity组件的过程如下:

(1)MainActivity组件向ActivityManagerService发送一个启动Activity组件的进程间通信。

(2)ActivityManagerService首先将要启动的Activity组件的intent信息保存起来,同时向MainActivity组件发送一个进入中止状态的进程间通信请求。

(3)MainActivity组件进入到中止状态后,就会向ActivityManagerService发送一个已进入中止状态的进程间通信请求,ActivityMangerService在收到中止状态的进程间通信请求后,把消息移除,并在mHistroy里同步MainActivity组件的状态,接着就可以执行启动Activity组件的操作。

(4)ActivityManagerService将第2步保存下来的intent消息发给已经存在启动的进程,以便启动Activity组件,这里还涉及到MainActivity组件在ActivityManagerService的状态保存。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-08 15:35:02

Activity组件的启动过程的相关文章

Android源码——Activity组件的启动过程

根Activity启动过程 Launcher启动MainActivity的过程主要分为6个步骤: 一.Launcher向ActivityManagerService发送一个启动MainActivity的进程间通信请求: 二.ActivityManagerService首先将MainActivity的信息保存下来,再向Launcher组件发送一个进入中止状态的进程间通信请求: 三.Launcher进入中止状态后,向ActivityManagerService发送一个已经进入中止状态的进程间通信请求

Android Activity组件的启动过程

0.总图 1.总图中的第一步,Laucher主线程向ActivityManagerService进程发出START_ACTIVITY_TRANSACTION 如图:第一步 ~/Android/frameworks/base/core/java/android/app ----ActivityManagerNative.java class ActivityManagerProxy implements IActivityManager { public int startActivity(IAp

Android窗口管理服务WindowManagerService显示Activity组件的启动窗口(Starting Window)的过程分析

文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/8577789 在Android系统中,Activity组件在启动之后,并且在它的窗口显示出来之前,可以显示一个启动窗口.这个启动窗口可以看作是 Activity组件的预览窗口,是由WindowManagerService服务统一管理的,即由WindowManagerService服务负责 启动和结束.在本文中,我们就详细分析WindowManag

Android 子Activity组件在进程内的启动过程 && 子Activity组件在新进程中的启动过程

1.子Activity组件在进程内的启动过程 在Android Activity组件的启动过程http://blog.csdn.net/jltxgcy/article/details/35984557一文中,我们已经详细分析了Activity的启动过程,对于子Activity组件在进程内的启动过程,我们只分析它们之间的不同. 主要是2处,1是不需要创建新的任务栈,2是不需要创建新进程和子线程. 第1点,体现在如下代码上: -/Android/frameworks/base/services/ja

Android Service组件在新进程中的启动过程

1.startService 在Android系统匿名共享内存(Anonymous Shared Memory)Java调用接口分析,http://blog.csdn.net/jltxgcy/article/details/31414509一文,Client调用了如下代码: public class Client extends Activity implements OnClickListener { public void onCreate(Bundle savedInstanceState

Android4.4 Framework分析——Activity窗口的创建过程(一)

学习android的窗口模块一周多了,感觉自己对这个模块的理解还是比较模糊,先把get的知识点记录一下. 下图是学习过程记录的activity窗口启动过程序列图,没有或者没办法完整的描绘出来,整个过程比较复杂: 整个学习过程中是参照老罗的android之旅博客和<深入理解android内核设计思想>一书来辅助的,非常感谢前辈. Activity的整体启动过程可查看Android4.4 framework分析--Launcher中启动应用程序(startActivity)的过程的序列图,本文关注

github项目解析(八)--&gt;Activity启动过程中获取组件宽高的三种方式

转载请标明出处:一片枫叶的专栏 上一个github小项目中我们介绍了防止按钮重复点击的小框架,其实现的核心逻辑是重写OnClickListener的onClick方法,添加防止重复点击的逻辑,即为第二次点击与第一次点击的时间间隔添加阙值,若第二次点击的时间间隔与第一次点击的时间间隔小于阙值,则此次点击无效,再次基础上我们又封装了点击组件验证网络Listener,点击组件验证是否登录Listener等,具体可参考:github项目解析(七)–>防止按钮重复点击 本文中我将介绍一下android中A

Activity组件启动过程(二)

前面启动过程图:(源码基于Android5.1) 获得到ActivityManagerProxy的实例后,会通过ActivityManagerProxy将启动Activity组件的相关信息写入到Parcel对象data中,然后发送一个类型为START_ACTIVITY_TRANSACTION的进程间通信请求给AMS(ActivityManagerService),接下来的工作的会在AMS进程中进行完成. 接下来的启动过程总结为下图: 处理START_ACTIVITY_TRANSACTION类型的

0-Android应用程序的Activity启动过程简要介绍和学习计划

源码分析 之 Activity启动过程简要介绍和学习计划 来源: http://blog.csdn.net/luoshengyang/article/details/6685853 声明: RTFSC(Read the fucking source code)是Linus的名言,也是学习IT技术一个重要手段.学习android最好手段就是对android进行系统分析,关于android系统的源码,CSDN的老罗分析分析是最系统一个.但是老罗的分析源码的blog,有几点不够好: 1.废话太多,可能