天天记录 - Android Activity 启动流程简单整理

来源:互联网 发布:山西八建集团网络平台 编辑:程序博客网 时间:2024/06/05 10:47


     启动Activity有两种方式: 应用列表中打开软件, 软件内打开另外一个activity。这里分析的是在引用列表中打开软件的方式。
1. startActivity
2. Launcher启动Activity

     执行顺序依次是1~35,展示的是framework层启动Activity的代码执行流程。
     画这个表格的目的主要是梳理出类与方法的调用顺序,最重要的是这些方法里面都做了些什么,而流程图之类的只能展示调用顺序,每一步都做了什么,为什么要这样做才是我最关心的内容。









*现在已第一种方式描述:
现象描述:先暂停当前Activity,然后启动指定的Acitvity并显示

各个类的简单介绍:
Instrumentation: 可以理解为进程的管家,ActivityThread要创建或者暂停某个Activity时,通过管家进行。好处是可以统计所有“开销”。
ActivityThread:相当于主人,负责创建这个“家庭”,并负责和外界打交道。


类名作用ActivityRecordActivityTaskRecordtaskProcessRecord进程




从8开始:运行环境检查
找到或创建合适的Task
?运行mHistory中最后一个HistoryRecord
应用进程pause指定Activity
ActivityPaused
通知应用进程resume指定的Activity
创建应用进程

* Locked意思是此方法必须是线程安全的。



步骤类方法Binder通信作用1LauncheronClick 应用列表中点击图标触发                                                                                                                           2LauncherstartActivitySafely  3ActvitystartActivity  4ActvitystartActivityForResult 传入Intent5InstrumentationexecStartActivityYES 6ActivityManagerNativegetDefault 返回IActivityManager是ActivityManagerService远程调用接口7ActivityManagerServicestartActivity 直接调用8ActivityStackstartActivityMayWait 解析Intent并把数据放入ActivityInfo9ActivityStackstartActivityLocked 获取Activity信息放入ActivityRecord10ActivityStackstartActivityUncheckedLocked AndroidManiFast.xml中Activity标签配置launch mode 配置进行处理11ActvityresumeTopActivityLocked 确保栈顶的Activity12ActivityStackstartPausingLocked 从Activity获取ApplicationThread,进入Paused状态13ApplicationThreadProxyschedulePauseActivityYES通知Activity进入Paused状态14ApplicationThreadschedulePauseActivity 直接调用15ApplicationThreadqueueOrSendMessage  16ActivityThread::HhandleMessage  17ActivityThreadhandlePauseActivity  18ActivityManagerProxyactivityPaused  19ActivityManagerServiceactivityPaused  20ActivityStackactivityPaused  21ActivityStackcompletePauseLocked  22ActivityStackresumeTopActivityLocked  23ActivityStackstartSpecificActivityLocked  24ActivityManagerServicestartProssLocked  25ActivityManagerServicestartProcessLocked  26ActivityThreadmain  27ActivityManagerProxyattachApplication  28ActivityManagerServiceattachApplication  29ActivityManagerServiceattachApplicationLocked  30ActivityStackrealStartActivityLocked  31ApplicationThreadProxyscheduleLaunchActivity  32ApplicationThreadqueueOrSendMessage  33ApplicationThreadhandleLaunchActivity  34ActivityThreadperformLaunchActivity  35CustomActivityonCreate  








参考资料:

android Application Component研究之Activity(一)
http://blog.csdn.net/windskier/article/details/7096521


Android深入剖析
      

Android 核心分析(12) -----Android GEWS窗口管理之基本架构原理
http://blog.csdn.net/maxleng/article/details/5554454

Android 核心分析(13) -----Android GWES之Android窗口管理
http://blog.csdn.net/maxleng/article/details/5557758