天天记录 - 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
http://blog.csdn.net/maxleng/article/details/5554454
Android 核心分析(13) -----Android GWES之Android窗口管理
http://blog.csdn.net/maxleng/article/details/5557758
- 天天记录 - Android Activity 启动流程简单整理
- 天天记录 - Android refreshDrawableState源码及流程简单分析
- activity启动流程记录
- 天天记录 - Android invalidate流程分析-图文
- Android Activity启动流程
- 天天记录 - Android requestLayout源码简单分析
- Android Activity四种启动模式简单介绍,学习记录。
- 天天记录 - Android Touch Event接收并传递给Activity
- 天天记录 - Android 使用dmeo和源码分析invalidate流程
- 天天记录 - Android invalidate流程方法调用堆栈分析
- Android Activity启动绘制流程
- Android Activity(一)启动流程
- Android -- Activity启动流程分析
- 天天记录 - Android ListView itemType使用Holder原理简单分析
- Android App启动简单流程
- Android启动Activity流程中的Token分析
- android内核剖析-----activity启动流程
- 【Android framework】am命令启动Activity流程
- [Chrome源码阅读] Browser相关的类
- 调用 fork 两次避免僵尸进程
- SSH原理与运用(二):远程操作与端口转发
- 打开Android C文件中的LOG
- linux mysql
- 天天记录 - Android Activity 启动流程简单整理
- HDOJ 1518 Square(DFS 深搜)
- uwsgi启动模式
- 三星6410摄像头测试程序流程分析
- SQL语句删除表格
- 大数的阶乘(C语言实现)
- java反射详解------java平台框架基础必备
- S3C6410 MFC H264 编码
- Tuxedo历史