Activity 启动时序图

本时序图是基于Android 8.0的源码绘制的,参考了《Android 开发艺术探索》,对Activity的启动流程进行了熟悉

Activity 启动时序图
Activity 启动流程图

 

Activity的启动其实是有两种情况的,
         第一种是从桌面上的icon图标,点击进入;
         第二种是在代码中通过 startActivity(Intent)的方式启动的;本文档是介绍的这种方式;

入口:startActivity(...)方法, 最终会调用到startActivityForResult(...)中;
          然后调用了 Instrumentain 类中的 execStartActivity方法;到目前为止,整个操作都是在
          APP自己的进程中;然后开始与AMS打交道(这里开始跨进程通信),接着调用了AMS的
          startActivity方法,然后跟着时序图流程一直到ActivityStackSupervisor的realStartActivitylocked方法中,
          在这段过程中都是在AMS的进程里面;接着调用了ApplicaitonThread的scheduleLaunchActivity方法,ApplicationThread
          是ActivityThread的一个内部类,它是binder的一个实现类;AMS和ApplicationThread的交互实际上是
          跨进程的通信,scheduleLaunchActivity方法发出了一个HandlerMsg,ActivityThread的handleLaunchActivity方法
          处理,调用了performLauchActivity,最终里面是调用了Instrumentain 的newActivity 通过classLoader去加载了一个
          新的Activity,然后调用onCreat,onStart,onResume等方法;注意的是,onResume调用之后,window才去update
          的,所以onResume里面也获取不到view的相关信息;

建议:跟着时序图然后去带着源码走一遍;个人能力有限,难免会有错误,给我留言,及时修正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值