Android高级常见面试题:说说Activity的启动流程

本文详细探讨了Android Activity的启动过程,从进程A与AMS的交互,AMS启动目标进程B,到应用端Activity的启动步骤。分析了AMS如何判断并启动目标进程,Zygote如何fork新进程,以及ActivityThread的main函数如何执行。文章强调理解这些底层机制对于面试和实际开发的重要性。
摘要由CSDN通过智能技术生成

考察要点:

  • 启动Activity会经历哪些生命周期回调
  • 冷启动大致流程,涉及哪些组件,通信过程是怎么样的?
  • Activity启动过程中,生命周期回调的原理?

总的流程图:

1. 进程A与AMS的交互过程

此处以跨进程启动Activity分析一下源码流程:

  1. A调用startActivity时,需要与AMS交互,此时需要需要获取到AMS的代理对象Binder也就是上图的AMP,通过ActivityManagerNative.getDefault()获得,并调用AMP的startActivity方法,然后会通过mRemote.transact方法进行Binder通信,在AMS的onTransact方法里面会获取到请求的Activity参数信息:

    mRemote.transact(START_ACTIVITY_TRANSACTION,data,reply,0);
    ...
    
    @Override
    public boolean onTransact(int code, Parcel data, Parcel reply, int flags){
          switch(code){
       case START_ACTIVITY_TRANSACTION:{        startActivity(app,callingPackage,intent,...)
       }
    }}
    
  2. AMS里面的startActivity方法最主要会去调用startSpecific

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值