gpt4 book ai didi

android - 我应该为我的应用程序使用 fragment 或 Activity 吗?

转载 作者:行者123 更新时间:2023-11-29 14:20:24 26 4
gpt4 key购买 nike

关闭。这个问题是opinion-based .它目前不接受答案。












想改进这个问题?更新问题,以便 editing this post 提供事实和引用来回答它.

5年前关闭。




Improve this question




我知道这个问题可能被问了很多,但我想得到一个专门针对我正在构建的应用程序的答案。我正在创建一个 Android 应用程序,它基本上是一个食谱搜索应用程序,它允许用户选择配料、食物类别和准备时间,该应用程序会找到适合用户搜索的食谱。

成分、类别和时间有单独的“页面”,我为每个页面创建了一个 Activity 。用户先选择食材,然后点击下一步,开始分类 Activity ,再次点击下一步,出现准备时间 Activity 。然后当他们单击搜索时,我有另一个结果 Activity ,当用户单击结果中的一个食谱时,另一个显示食谱的 Activity 开始。

所以我有以下 Activity ,其中每个 Activity 按以下顺序开始下一个:

  • 成分 Activity
  • 分类 Activity
  • 时间 Activity
  • 结果 Activity
  • 食谱 Activity

  • 我做了一些阅读,发现我可能应该使用 fragment 。我的计划是更改我的应用程序,使其具有一个选项卡式 Activity ,其中包含三个用于成分、类别和时间的选项卡,底部有一个搜索按钮,该按钮显示在所有三个 fragment 中,允许用户在选项卡和搜索之间轻松切换从他们当前正在查看的任何选项卡中。至于结果和显示食谱,我正在考虑让他们各自的 Activity 保持原样。 Search 按钮启动 ResultActivity,单击单个搜索结果会启动 RecipeActivity 并显示用户单击的食谱。

    另外,我打算添加一个“按食谱标题搜索”功能。用户将能够使用操作栏中的菜单按钮在这两种搜索模式之间切换。我假设每种搜索模式都必须有一个单独的 Activity ,所以这就是我打算做的。

    我的想法是正确的方法吗?或者我应该为整个应用程序只做一项 Activity ,其余的只用 fragment 来完成?

    最佳答案

    对我来说,关于 Activity 或 Fragment 的所有决策都与(1)UX(2)可管理性(3)跨组件的通信成本等有关。

    让我通过例子来介绍一些决定。

  • 屏幕是否需要从外部启动(共享 Intent )?
  • Activity更好,因为它可以直接从 AndroidManifest 提供的内容中打开。
  • 屏幕是否需要逐页查看(食谱页面)?
  • Fragment更好,因为 Fragment+ViewPager 提供灵活的分页功能。此外,某些Android设备或主题编辑器会覆盖Activity打开效果,因此如果我们以Activity-by-Activity的方式实现翻页动画,则无法按预期运行。
  • 屏幕是否使用 StartActivity 执行相机或照片 Intent ? ?
  • Activity不如 OnActivityResult当应用程序从相机应用程序恢复时,很难管理内部 fragment 。出于这个原因,“写一篇文章”屏幕可能是一个很好的例子,可以作为一个单一的 Activity 。
  • 无论屏幕开/关(定时器)如何,屏幕都必须运行吗?
  • Activity更好,因为它可以在没有 Activity-Fragment dancing 的情况下显示得更快更轻.
  • 屏幕是否有一种主从层次结构?
  • Fragment更好,因为我们可以准备平板电脑布局。
  • 屏幕占用内存大吗?
  • Activity更好,因为我们可以只关注 Activity 而不是内部 fragment 内存使用。
  • 屏幕是否有超过 3 深度的嵌套 fragment ?
  • Fragment ,不情愿。 Fragment 之间的通信不稳定,Activity-Fragment 桥接/跳舞总是让人头疼1 2 .我们可以降低复杂性,但是 Activity-inside-Fragment-inside-ViewPager-inside-fragment-... 很难实现可管理性。

  • 使用多个 FragmentActivity由专业的 Android 开发人员推荐,但我们可以决定创建更多的 Activity ,以便于管理和更快地理解。

    在您的情况下,我想实现如下组件。
  • 带有 fragment 的 MainActivity:成分、类别、食谱。
  • ResultActivity with Fragments:搜索及其结果是一种主从 View 。
  • TimerActivity:单Activity运行应该不错。
  • RecipeActivity:如果每个菜谱都有自己的 id 并且可以作为永久链接共享,那么您的应用可以通过 RecipeActivity 直接打开菜谱页面。而且,即使您的应用程序从关闭状态恢复或从另一个应用程序情况切换回,显示配方可能会更好。
  • 关于android - 我应该为我的应用程序使用 fragment 或 Activity 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40069503/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com