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

时间:2019-07-05 19:25:53

标签: android android-architecture-navigation

在android导航图中,我们在目标位置有global actions 动作

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

1 个答案:

答案 0 :(得分:1)

将图形视为类层次结构会有所帮助:添加操作就像向基类添加方法。这样,该操作就可用于所有子类(即该图中的所有目标)。

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

  

封装用于在类内隐藏结构化数据对象的值或状态,以防止未授权方直接访问它们。

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

使用Safe Args时,差异更加明显,因为Safe Args会生成与您的图形完全匹配的Directions类的匹配类层次结构:全局操作出现在YourNavGraphIdDirections基类和目标上具体操作将显示在各个YourFragmentDirections子类上。

因此,通过滥用全局操作,您将使每个目标上可用的可用方法(即操作)的列表混乱不堪,这使您很难确定对于给定目标实际上是什么适当的操作。