【android话题-4.1Activity】说说Actvity的启动流程
考察内容:
- 启动Activity会经历哪些生命周期回调
- 冷启动大致流程,涉及哪些组件,通信过程是怎么样的?
- Activity启动过程中,生命周期回调的原理?
应用端Activity启动的步骤
- 通过ClassLoader加载APK里面的Activity类,生成Activity对象;
- 准备好Application(并非创建,而是把之前创建好的Application返回);
- 创建ContextImpl
- attach上下文(不单是context,还包括与Application运行相关的重要系统变量);
- 生命周期回调
Activity启动过程中涉及的组件间通信过程
- 需要向AMS发送startActivity请求;
- AMS如果发现应用进程没启动就会通过socket向zygote发送启动进程请求;
- zygote收到请求后就会启动进程;
- 应用启动后会向AMS发起attachApplication的IPC调用(注册应用里的applicationThread);
- AMS向应用发起bindApplication的IPC调用(给应用初始化application);
- AMS再向应用发起scheduleLaunchActivity的IPC调用(给应用加载和创建Activity并执行Activity生命周期);
回归:说说Activity的启动流程
- 启动Activity要向AMS发起biner调用
- Activity所在进程是怎么启动的?
- 应用Activity的生命周期是怎么回调的?