考察要点:
- 启动Activity会经历哪些生命周期回调
- 冷启动大致流程,涉及哪些组件,通信过程是怎么样的?
- Activity启动过程中,生命周期回调的原理?
总的流程图:
1. 进程A与AMS的交互过程
此处以跨进程启动Activity分析一下源码流程:
-
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,...) } }}
-
AMS里面的startActivity方法最主要会去调用startSpecific