Android导航体系结构组件-导航体系结构组件是否仅打算使用单一活动?

时间:2018-06-25 03:10:55

标签: android kotlin navigation android-jetpack android-architecture-navigation

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

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

  1. Android导航体系结构组件是否旨在消除在单个应用程序中使用多个Activity的需要?那意味着整个应用程序只需要一个“活动”,其他所有页面都是“片段”?
  2. 在应用程序中使用多个活动,但同时使用 Android导航体系结构组件导航片段是否确实违反了 Android导航体系结构组件的目的?

问题2的示例场景

enter image description here

1 个答案:

答案 0 :(得分:8)

理论上,导航库支持您可能要使用的任何体系结构。开箱即用,它可以将“活动”和“片段”作为导航目的地,但是您可以通过implementing your own Navigator插入自己的解决方案(例如,请参见this article)。

不过,引用{/ {3}}的措辞:

  

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

     

现在,某些应用程序的活动非常繁重,某些应用程序的片段非常繁重,或者完全在另一个系统中。我们正在朝着一种模式迈进,在这种模式中,“活动”只是您应用程序的切入点,而不是应用程序内容的所有者。实际上,它只是存储全局状态,例如全局导航,例如导航抽屉或底部栏。

因此Google确实建议您的应用仅包含几个Activity,因为您只需要它们作为切入点即可。例如,您可以有一个从启动器中打开,而另一个由深层链接打开。之后,启动您的应用程序后,您可以使用Fragments执行其内部的其他所有操作。

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

  1. “导航体系结构组件”本身并不是“旨在消除使用多个活动的需要”,但是Google建议您在使用时进行此操作。

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

    该库的工具可能不适用于自定义目标(例如,可视化编辑器暂时可能仅支持“活动”和“片段”),但是您可以根据需要从代码中使用它。 / p>