Android Activity之间跳转的原理
一、Activity跳转核心流程
Android Activity跳转的底层实现涉及 系统服务交互、进程间通信(IPC) 和 生命周期管理,主要流程如下:
-
startActivity()触发请求
应用调用startActivity()时,通过Instrumentation类将Intent封装为标准化请求,并校验权限与目标合法性 -
Binder通信与AMS处理
请求通过Binder跨进程传递至ActivityManagerService(AMS)。AMS 负责:- 解析目标 Activity 的组件信息(如
<intent-filter>匹配) - 检查权限及进程状态,决定是否启动新进程或复用现有进程
- 更新
ActivityStack管理任务栈,确保栈顶 Activity 获得焦点
- 解析目标 Activity 的组件信息(如
-
目标 Activity 实例化
AMS 通过ApplicationThread回调目标应用进程,触发ActivityThread的H处理器(Handler)创建目标 Activity 实例,依次调用其onCreate()、onStart()、onResume() -
原 Activity 生命周期切换
当前 Activity 在目标 Activity 启动前执行onPause(),待目标 Activity 完成onResume()后进入onStop()(若被完全覆盖)
