写点什么

时隔七年,谷歌以 Jetpack Navigation 3 重塑 Android 导航体验

作者:Sergio De Simone

  • 2025-11-25
    北京
  • 本文字数:1004 字

    阅读完需:约 3 分钟

大小:466.11K时长:02:39
时隔七年,谷歌以Jetpack Navigation 3重塑Android导航体验

谷歌发布了新的 Jetpack Navigation 3 库,彻底重新设计了 Android 应用中的通知处理。新库提供了完整的返回栈控制,并与 Jetpack Compose 的状态管理实现了无缝集成。

 

Jetpack Navigation 3 的诞生源于这样一个认识:尽管其前身的功能没有任何问题,但“现在构建应用的方式已经发生了根本性的变化”。

 

具体来说,正如谷歌工程师 Don Turner 所解释的那样,大多数现代应用现在都遵循响应式编程范式。这使得开发人员管理视图栈的方式发生了根本性的变化。举例来说,在 Navigation 3 中,只需向库的 NavDisplay 组件所监视的列表中添加一项,即可导航至新视图。同样,当需要从当前屏幕返回时,只需从列表中移除对应的项。NavDisplay 会根据列表变化自动更新用户界面。

 

以 Jetpack 状态管理作为 Navigation 3 的基础还有一个很大的好处,使用它可以轻松创建单一数据源。这与开发人员定义的状态一致。相比之下,Navigation 2 保留了自身的内部状态,导致应用状态分散在应用自身表示和 Navigation 2 表示两个地方。

 

Navigation 3 采用完全模块化的设计,通过独立的 API 实现无缝协作,提供了更高的灵活性和可定制性。这使得开发人员能够针对特定的用例创建复杂的功能,并突破 Navigation 3 为常见导航模式提供的默认行为。有意思的是,这些默认行为正是基于相同的底层 API 实现的。例如,开发人员可以自定义屏幕动画效果,或创建能同时显示多个窗格的灵活布局

 

为了实现更大程度的定制,开发人员可以用他们自己的实现替换特定的 Navigation 3 组件。 Android 开源项目(AOSP)中提供了 Navigation 3 的完整代码,这使得替换过程比较简单。

 

要在应用中使用 Navigation 3,开发人员需要为每个可显示组件关联一个唯一的键,并将该键推入返回栈,让 NavDisplay 观察它的变化,从而自动添加和移除屏幕上的内容。

 

为了简化开发人员的工作,谷歌已经发布了一个代码库,目前包含 19 个导航方法,未来还会增加,包括多返回栈、导航参数传递、从屏幕返回结果等。

 

最后,Navigation 3 也可以在 JetBrains 的 Jetpack Compose Multiplatform 上使用。尽管仍处于 Alpha 阶段,但它使非 Android 应用能够利用新发布的导航 API。为了更好地支持纯原生体验,Navigation 3 多平台版本提供了特定于平台的增强功能,如支持 iOS 的边缘滑动手势。

 

声明:本文为 InfoQ 翻译,未经许可禁止转载。

 

原文链接:https://www.infoq.com/news/2025/11/android-jetpack-navigation-3/

2025-11-25 11:271

评论

发布
暂无评论

架构师训练营 week4 学习总结

花果山

极客大学架构师训练营

Architecture Phase1 Week8:HomeWork

phylony-lu

极客大学架构师训练营

产品发布 | 准备好提升你的 ITSM 了吗?

Atlassian

DevOps Atlassian ITSM ITIL

「八大排序算法」16张图带你彻底搞懂基数排序

bigsai

排序算法 基数排序

架构师训练营 W04 作业

Geek_f06ede

极客大学架构师训练营

脱钩!打工人不配拥有Java程序员306道面试秘笈吗?真香

996小迁

Java 学习 架构 面试 笔记

四、应用系统探讨

Geek_28b526

LeetCode题解:169. 多数元素,哈希表,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

架构师训练营 week4 课后作业

花果山

极客大学架构师训练营

极客时间架构师训练营 1 期 - 第 8 周总结

Kaven

架构师训练营第 4 周学习总结

菜青虫

极客大学架构师训练营

架构师训练营第 4 周课后练习

菜青虫

极客大学架构师训练营

week4学习小结

幸福小子

互联网系统架构

为什么说 Pulsar 是云原生的消息平台?

tison

云原生 消息队列 Apache Pulsar

Week 8总结

黄立

Java8引入新的日期和时间库,你应该知道

Silently9527

java8

架构师训练营第四周作业2

韩儿

Architecture Phase1 Week8:Summarize

phylony-lu

极客大学架构师训练营

架构师训练营第 1 期第 8 周作业

好吃不贵

极客大学架构师训练营

第四周课后练习作业一

lithium

极客大学架构师训练营

亚新资本开创金融理财新征程

Wi-Fi+BLE 通断器开发资料全开源!快速打造您的智能家居“改装神器”

智能物联实验室

人工智能 物联网 智能家居 通断器

架构师入门学习感悟四

笑春风

架构师训练营第 1 期 -- 第八周学习总结

发酵的死神

极客大学架构师训练营

一个典型的大型互联网应用系统使用了哪些技术方案和手段,主要解决什么问题?请列举描述

幸福小子

互联网系统架构

第四周课后练习作业二

lithium

架构师训练营 - 第 8 周课后作业(1 期)

阿甘

极客时间架构师培训 1 期 - 第 8 周作业

Kaven

推荐好书:《使用Python进行图像处理和采集》第二版(附下载方式)

计算机与AI

Python 图像处理

架构师训练营第 1 期 -- 第八周作业

发酵的死神

极客大学架构师训练营

架构师训练营第四周作业

韩儿

时隔七年,谷歌以Jetpack Navigation 3重塑Android导航体验_软件工程_InfoQ精选文章