困境:何时使用片段与活动:

新手上路,请多包涵

我知道 Activities 旨在表示我的应用程序的单个屏幕,而 Fragments 被设计为可重用的 UI 布局,其中嵌入了逻辑。

直到不久前,我开发了一个应用程序,因为它说应该开发它们。我创建了一个 Activity 来表示我的应用程序的屏幕,并将片段用于 ViewPagerGoogle Maps 。我很少创建 ListFragment 或其他可以多次重复使用的 UI。

最近我偶然发现一个项目只包含 2 Activities 一个是 SettingsActivity 另一个是 MainActivityMainActivity 的布局填充了许多隐藏的全屏 UI 片段,并且只显示了一个。在 Activity 逻辑中有很多 FragmentTransitions 在应用的不同屏幕之间。

我喜欢这种方法的原因是,因为应用程序使用 ActionBar ,它保持不变并且不会随着屏幕切换动画移动,这就是 Activity 切换时发生的情况。这为这些屏幕过渡提供了更流畅的感觉。

所以我想我要问的是分享你目前关于这个主题的开发方式,我知道它乍一看可能看起来像是一个基于意见的问题,但我把它看作是一个 Android 设计和架构问题……基于意见的一个。

更新(01.05.2014):SquareEric Burke 的演讲之后,(我不得不说这是一个很棒的演讲,为 android 开发人员提供了很多有用的工具。而且我与 Square 没有任何关系)

http://www.infoq.com/presentations/Android-Design/

根据我过去几个月的个人经验,我发现构建应用程序的最佳方式是创建一组片段,这些片段代表应用程序中的一个 流程,并将所有这些片段呈现在一个 Activity 中。所以基本上你的应用程序中的 Activities 的数量与流的数量相同。这样,动作栏在所有流程的屏幕上保持不变,但在更改流程时重新创建,这很有意义。正如 Eric Burke 所说,我也意识到,尽可能少使用 Activities 的理念并不适用于所有情况,因为它会在他所谓的“上帝”活动中造成混乱。

原文由 Emil Adz 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 292
1 个回答

一些错误的想法:

  • 始终在您的应用程序中放置一个 活动,并使用 片段 处理不同的屏幕。
  • 直接在 活动 中编写 UI 代码。
  • 通过 片段 处理屏幕之间的 导航(我不是指标签,我的意思是例如全屏视图)。
  • 活动 可以用 片段 代替。

事情就是这样!

片段旨在实现 UI 的可重用部分,并在需要的应用程序的任何部分中使用它们。它们不是为替代活动而设计的。

我们什么时候必须使用它们中的每一个?

  • 当我们有一个 独立的屏幕,其中有一些 不同的 UI 部分(选项卡、可扩展屏幕、部分屏幕等)时,我们应该使用 带有一些片段的活动 来在同一个屏幕中分别实现和处理不同的 UI 部分。
  • 应用程序的每个 独立部分 实际上是一个在 概念上与其他部分不同组件,它需要有一个 独立的活动。例如, 登录 部分可能包含一些 不同的场景,例如使用用户名密码或使用指纹。每个场景都可以由一个片段来实现,所有与登录相关的片段都应该由 LoginActivity 处理。但是比如应用中的 订单 部分与登录没有 概念上的关系,所以它必须有不同的活动,当然它可能包含一些片段,如OrdersFragment,SubmitNewOrderFragment等,它们都必须由 OrdersActivity 管理。
  • 不要直接在活动中实现 UI。始终在片段中实现 UI 并将这些片段添加到活动中,即使该活动中只有一个片段。它可以帮助您拥有更多可重用的代码并更轻松地更改 UI。
  • 即使您强制用户在后台堆栈中拥有有限数量的片段,也 不要使用片段在应用程序中无限导航。事实是,当您将新片段添加到后台堆栈并删除它时,它不会从内存中删除,除非父活动被破坏并且它只是不可见。因此,当您使用片段管理器返回堆栈时,通过在同一活动中的片段之间多次导航(特别是在您在每个导航上创建一个新片段并将它们放入返回堆栈的情况下)您将在应用程序中获得 OutOfMemoryException .

我希望它会有所帮助。

原文由 Mansour 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题