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的相关信息;

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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对不起,我无法提供图形化的内容,因为我只能处理文本。但是我可以通过文字来描述一个Activity启动时序图。 当一个Activity启动时,以下是它的大致时序图: 1. 用户点击应用程序的图标或从其他应用程序中启动Activity。 2. 系统在操作系统级别接收到启动Activity的请求。 3. 系统启动应用程序进程(如果尚未运行)。 4. 应用程序进程被创建并加载到内存中。 5. 应用程序进程启动主线程。 6. 主线程初始化应用程序的资源和UI组件。 7. 主线程调用Activity的生命周期方法(onCreate)。 8. Activity的布局被加载到屏幕上,并显示给用户。 9. 如果有必要,主线程会执行其他初始化操作,如加载数据或设置事件监听器。 10. Activity的生命周期方法(onStart、onResume)被调用,Activity变为可见状态并开始响应用户交互。 11. 用户与Activity进行交互,可能触发一些事件或操作。 12. 如果用户执行了某些操作(如点击按钮),主线程会调用Activity的相应事件处理方法(如onClick)。 13. Activity根据用户的操作作出相应的响应,可能涉及到更新UI、执行业务逻辑等操作。 14. 用户继续与Activity进行交互,重复步骤11-13。 15. 当用户离开当前Activity(如按下返回按钮)或其他情况导致Activity不再可见时,Activity的生命周期方法(onPause、onStop)会被调用。 16. 如果Activity被销毁(如用户切换到其他应用程序),主线程会调用Activity的生命周期方法(onDestroy)。 17. 应用程序进程可能在后台继续运行,直到系统需要释放资源时才会被终止。 这是一个简化的时序图,仅描述了Activity启动和基本生命周期方法的调用,实际情况可能会更加复杂。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值