凌晨一点,第无数次被NavController的黑箱回退栈绊倒后,一个安卓开发者抓起咖啡,点开了Google刚发布的Navigation 3——这一次,他决定不再跟导航库较劲。
导航一直是安卓开发里最让人头疼的部分。用Jetpack Compose的人大多用过NavHost和NavController,功能能跑,但那股别扭劲儿谁都清楚。Navigation 2把回退栈裹得严严实实,你只能输入目的地,看不到中间过程;路由全靠URL风格的字符串“detail/{id}”,手一抖就错;更麻烦的是,它最初为XML视图设计,硬挤进Compose的声明式世界,API总显得格格不入。
![]()
Navigation 3则像把一张可以随手涂改的地图交到你手里。最核心的变化是,回退栈不再关在黑箱里——它只是一个SnapshotStateList,你能随时读取、添加或移除条目。路由也告别了字符串拼接,改用加了@Serializable注解的Kotlin类或对象,类型安全,传参再也不靠猜。整个库精简到三个基本概念,完全跟着Compose的思考方式走,而不是反向拉扯。如果Navigation 2是只让你输入目的地的导航仪,Navigation 3就是一张能看见每条路、随心重排停靠点的活地图。
上手成本很低。在gradle/libs.versions.toml里定好版本号:nav3Core = "1.1.2",再拉入navigation3-runtime、navigation3-ui和kotlinx-serialization-core三个库。别忘了在app/build.gradle.kts里启用kotlin.serialization插件,因为类型安全路由全靠Kotlin序列化来驱动。完整源码已经放到了github.com/amary21/MyCompose,一个真实的旅行目的地App会带着你一步步走通整个流程。
把你手里那块旧导航的“黑盒”拆开,换上一个能看清全貌、能随手调整的地图,迁移到Navigation 3的代码量比想象中少得多。如果你也受够了和导航库无休止的磨合,不妨从下一个页面开始,试试这套新工具。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.