Android导航架构组件 - 导航架构组件是否仅用于单个活动?

I a*_*ent 13 navigation android kotlin android-jetpack android-architecture-navigation

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

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

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

问题2的示例场景:

在此输入图像描述

zsm*_*b13 9

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

但是,引用/转述Google I/O关于导航的话题:

我的活动实际意味着什么?

现在,一些应用程序非常活动,一些是片段重,或完全在不同的系统中.我们正在转向一种模式,其中"活动"不仅仅是应用程序的入口点,而不是应用程序内容的所有者.它实际上只是存储全局状态,例如导航抽屉或底栏等全局导航.

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

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

  1. 导航架构组件本身并不是"旨在消除使用多个活动的必要性",而是谷歌建议您在使用它时所做的事情.

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

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