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()
(若被完全覆盖)