2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

时隔七年,谷歌以 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:272985

评论

发布
暂无评论

太厉害了,终于有人能把Ansible讲的明明白白了,建议收藏

沐风

ansible

微信读书又更新,吃灰已久的Pencil又能拿出来遛一遛了。

彭宏豪95

效率工具 读书 阅读 4月日更 微信读书

深入汇编指令理解Java关键字volatile

AI乔治

Java 架构 volatile Java内存模型

一次用户故事拆分分享

Bruce Talk

敏捷 Agile 用户故事 User Story

关于读书的随想

小天同学

读书 4月日更

基于NIO高性能、可扩展网络应用库:xSocket

风翱

4月日更 xSocket

40 图|硬核解析用 Mac M1 玩转 SpringCloud

悟空聊架构

开源 Mac SpringCloud m1 passjava

当区块链遇到工业互联网,浪潮云洲链正在那里

云计算

大学生调研:在选择工作时,最看重什么?

石云升

28天写作 4月日更 1 周年盛典

Python OOP-2

若尘

面向对象 oop 面向对象编程 Python编程

高效获取信息的几点经验

彭宏豪95

效率 信息 阅读 4月日更

欢迎 ProForma 的制造商 ThinkTilt 加入 Atlassian 的大家庭!

Atlassian

敏捷 esm ITSM Atlssian JiraServiceManagement

ShutdownHook原理

捉虫大师

Java

【得物技术】得物分布式UI自动化实践

得物技术

测试 UI 质量 自动化测试 得物技术

掉坑了!GROUP_CONCAT函数引发的线上问题

AI乔治

Java MySQL 架构 GROUPING运算符

大数据-数据处理分类篇

进击的梦清

大数据 批处理 流式计算框架

HZFE 快报002 / 比特币7年来首次跌破50天均线

HZFEStudio

大前端 金融科技 科技互联网 资讯

内容平台与热点挖掘思考

程序员架构进阶

28天写作 4月日更 领域思考 内容平台

苹果(Apple Watch)手表使用必知必会19条

Flychen

苹果手表 IWatch Apple Watch

Git 常用命令速查

箭上有毒

4月日更

读书有用吗

孙苏勇

读书

浅析 Linux 中的 I/O 管理

赖猫

Linux

ceph-csi源码分析(1)-组件介绍与部署yaml分析

良凯尔

Kubernetes 源码分析 Ceph CSI

网络协议学习笔记 Day2

穿过生命散发芬芳

网络协议 4月日更

Java最前沿技术——ZGC

AI乔治

Java 架构 jdk ZGC JVM

如何利用 Google 开源工具 Ko 在 kubernetes 建并部署 Go 应用

公众号:云原生Serverless

Kubernetes 云原生

Golang 反射

escray

学习 极客时间 Go 语言 4月日更

噱头or契机:多端协同游戏的草蛇灰线

脑极体

打通本地部署和公有云,混合云架构让“鱼”和“熊掌”兼得(一)

UCloud技术

混合云

Flink的Checkpoint持久化存储方案

五分钟学大数据

flink 4月日更

产品训练营第三周作业

innovator琳

产品

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