android 导航图中全局操作和目的地特定操作之间的区别?

Difference between global actions and destination specific action in android navigation graphs?

在 android 导航图中,我们有 global actions 目的地内的操作 .

使用全局动作,多个目的地可以重复使用一个动作。那么在目的地内使用操作的优势是什么?
换句话说,在整个导航图中使用全局动作的缺点是什么?

将图表视为 class 层次结构会很有帮助:添加操作就像向基础 class 添加方法。这使得该操作可用于所有子classes(即该图中的所有目的地)。

面向对象编程语言的一个关键部分是encapsulation:

Encapsulation is used to hide the values or state of a structured data object inside a class, preventing unauthorized parties' direct access to them.

当您将一个动作添加到单个动作时,除了在导航编辑器中使其显而易见之外,您还提供了一定程度的封装,确保仅从该特定目的地使用该动作。

使用 Safe Args 时差异更加明显,因为 Safe Args 会生成与您的图表匹配的 Directions classes 的 class 层次结构:全局操作出现在 YourNavGraphIdDirections 基础 classes 上,目标特定操作出现在个人 YourFragmentDirections subclasses.

因此,通过滥用全局操作,您会弄乱每个目的地可用的可用方法(即操作)列表,使您更难确定对于给定目的地什么才是适当的操作。