Activity跨进程启动
- 请求进程A通过startActivity方法调用AMP
- system_server进程中的AMS执行:
- 解析Activity信息(androidManifest.xml)
- 处理启动参数
- 启动目标进程
- 绑定新进程
- 调用ATP(ApplicationThread代理)
- 目标进程B通过ApplicationThread调用ActivityThread,最终启动Activity的生命周期
AMP -> AMS 以及 ATP -> ApplicationThread都是通过binder进行通信的
Activity进程内启动
- 请求进程A通过startActivity方法调用AMP
- system_server进程中的AMS执行:
- 解析Activity信息(androidManifest.xml)
- 处理启动参数
- 调用ATP(ApplicationThread代理)
- 进程A过ApplicationThread调用ActivityThread,最终启动Activity的生命周期
Activity的参数传递
1 | graph LR |
- 大小受缓冲区大小限制
- 数据必须可以序列化
解决办法:
1 | graph LR |
Activity之间的数据传递不能太大
Activity实例化
通过反射newInstance实现,所以不能对Activity添加构造方法。
同理,fragment也一样。