1. Navigation 3 基础概念解析
Navigation 3 是 Google 在 2025 年推出的新一代 Compose 导航库,专为现代声明式 UI 架构设计。与传统的 Navigation 2 相比,它从根本上重构了导航模型,使其更符合 Compose 的响应式编程范式。
1.1 核心设计理念
Navigation 3 的核心设计围绕三个关键原则:
-
状态驱动导航:将导航状态完全融入 Compose 的状态管理系统,导航变化触发局部重组而非全局重建。这与传统基于 Fragment 的导航有本质区别 - 后者依赖系统级的页面栈管理。
-
类型安全路由:通过 Kotlin 的密封类和序列化机制,实现了编译期可检查的路由系统。每个导航目标都对应一个具体的类型,彻底告别字符串路由的运行时错误。
-
组合式架构:导航不再是黑盒系统,所有组件(动画、状态保存、返回栈)都以可组合函数的形式提供,开发者可以灵活定制各环节。
提示:Navigation 3 要求最低 Kotlin 1.9.0 和 Compose 2.0.0,这是因为它深度使用了 Kotlin 的上下文接收器(Context Receivers)等新特性。
1.2 与传统导航的架构对比
传统 Android 导航系统基于 Activity 和 Fragment,其架构存在几个根本性限制:
- 强依赖系统组件:必须运行在 Android 平台上,无法直接用于 Compose Multiplatform
- 生命周期耦合:导航逻辑与组件生命周期紧密绑定
- 状态管理困难:页面状态需要手动保存/恢复
而 Navigation 3 的架构优势体现在:
kotlin复制// 传统导航的典型代码
startActivity(Intent(this, DetailActivity::class.java).apply {
putExtra("id", 123)
})
// Navigation 3 的等效实现
navController.navigate(Detail(id = 123))
这种设计差异带来的直接好处是:
- 类型安全:
Detail路由的参数在编译期就确定 - 平台
