博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
深入理解Activity启动流程(一)–Activity启动的概要流程
阅读量:6192 次
发布时间:2019-06-21

本文共 845 字,大约阅读时间需要 2 分钟。

概述

Android中启动某个Activity,将先启动Activity所在的应用。应用启动时会启动一个以应用包名为进程名的进程,该进程有一个主线程,叫ActivityThread,也叫做UI线程。

本系列博客将详细阐述Activity的启动流程,这些博客基于Cm 10.1源码研究。

Activity启动时的概要交互流程

用户从Launcher程序点击应用图标可启动应用的入口Activity,Activity启动时需要多个进程之间的交互,Android系统中有一个zygote进程专用于孵化Android框架层和应用层程序的进程。还有一个system_server进程,该进程里运行了很多binder service,例如ActivityManagerService,PackageManagerService,WindowManagerService,这些binder service分别运行在不同的线程中,其中ActivityManagerService负责管理Activity栈,应用进程,task。

Activity启动时的概要交互流程如下图如下所示(点击图片可看):

用户在Launcher程序里点击应用图标时,会通知ActivityManagerService启动应用的入口Activity,ActivityManagerService发现这个应用还未启动,则会通知Zygote进程孵化出应用进程,然后在这个dalvik应用进程里执行ActivityThread的main方法。应用进程接下来通知ActivityManagerService应用进程已启动,ActivityManagerService保存应用进程的一个代理对象,这样ActivityManagerService可以通过这个代理对象控制应用进程,然后ActivityManagerService通知应用进程创建入口Activity的实例,并执行它的生命周期方法。

后续博客将介绍Activity的详细启动流程。

转载地址:http://cprda.baihongyu.com/

你可能感兴趣的文章
HTML5自定义data属性
查看>>
cassandra多数据中心的配置
查看>>
yeoman错误提示
查看>>
Linux(CentOS)文件操作命令
查看>>
【原创】开源Math.NET基础数学类库使用(17)C#计算矩阵条件数
查看>>
如何让jboss eap 6.2+ 的多个war应用共享 jar 包?
查看>>
在Ubuntu中安装Redis
查看>>
小程序猿都找到了工作经验的方式
查看>>
ARM板卡ftp客户端应用
查看>>
Android实现不重复启动APP的方法
查看>>
http的500,502,504错误
查看>>
如何在Java中定义常量(Constant)
查看>>
改变导航条标题的颜色为红色
查看>>
Gson解析json数据
查看>>
PTA第三次上机
查看>>
27Spring_的事务管理_银行转账业务加上事务控制_基于tx.aop进行声明式事务管理...
查看>>
jar war
查看>>
Hibernate的集合映射与sort、order-by属性
查看>>
漫谈iOS Crash收集框架
查看>>
spring MVC配置详解(转)
查看>>