15

我目前正在学习新的Android 导航架构组件 (https://developer.android.com/topic/libraries/architecture/navigation/)。

我有点混淆它的动机和概念,这是我的不确定性:

  1. Android 导航架构组件是否旨在消除在单个应用程序中使用多个 Activity 的需要?这意味着,整个应用程序只需要一个单一的活动,而所有其他页面都将是片段?
  2. 在应用程序中使用多个活动,但同时使用Android 导航架构组件来导航 Fragment 是否实际上违反了Android 导航架构组件的目的?

问题 2 的示例场景

在此处输入图像描述

4

1 回答 1

10

理论上,导航库支持您可能想要使用的任何架构。开箱即用,它可以将活动和片段作为导航目的地处理,但您可以通过实现自己的导航器来插入自己的解决方案(例如,请参阅这篇文章)。

但是,引用/解释自Google I/O 关于导航的谈话

我的活动实际上是做什么的?

现在,有些应用程序非常依赖 Activity,有些应用程序非常依赖 Fragment,或者完全在不同的系统中。我们正在走向一个模型,在这个模型中 Activity 更像是您的应用程序的入口点,而不是您的应用程序内容的所有者。它实际上只是存储全局状态,例如像导航抽屉或底栏这样的全局导航。

因此,Google 确实建议您的应用只使用几个活动,因为您只需要它们作为入口点。例如,您可以让一个从启动器打开,另一个通过深层链接打开。之后,当您的应用程序启动时,您可以使用 Fragments 在其中执行所有其他操作。

总结并直接回答您的两个问题:

  1. 导航架构组件本身并不是“旨在消除使用多个活动的需要”,但它是 Google 建议您在使用它时做的事情。

  2. 您绝对仍然可以将多个活动和多个片段混合在一起使用。如果您愿意,您甚至可以使用具有纯基于视图的导航的单个 Activity。全取决于你。如果您发现 Navigation 库与您构建应用程序的方式相结合很有用,请使用它。

    该库的工具对于自定义目标可能不是那么好(例如,可视化编辑器可能暂时只支持活动和片段),但您可以从代码中随心所欲地使用它。

于 2018-06-25T05:33:54.373 回答