我应该为我的应用程序使用片段或活动吗?

use*_*779 1 android android-fragments android-activity

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

成分,类别和时间都有单独的"页面",我为每个创建了一个活动.用户首先选择成分,然后当他们单击"下一步"时,将启动类别活动,然后再次单击"下一步"时,将启动准备时间活动.然后,当他们单击"搜索"时,我有另一个结果活动,当用户单击结果中的一个配方时,另一个用于显示配方的活动开始.

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

  • IngredientActivity
  • CategoryActivity
  • TimeActivity
  • ResultActivity
  • RecipeActivity

我做了一些阅读,发现我应该使用片段.我的计划是更改我的应用程序,以便它有一个标签式活动,其中包含三个选项卡,用于分析,分类和时间,底部有一个搜索按钮,显示在所有三个片段中,这样用户可以轻松地在标签和搜索之间切换从他们目前正在查看的任何标签.至于结果和显示食谱,我想留下他们各自的活动."搜索"按钮启动ResultActivity,单击单个搜索结果将启动RecipeActivity并显示用户单击的配方.

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

我的想法是正确的方法吗?或者我应该只为整个应用程序只有一个活动,并完全使用片段完成其余的活动?

You*_*jae 13

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

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

  1. 屏幕是否需要从外部启动(共享意图)?
    • Activity 更好,因为它可以直接从AndroidManifest提供.
  2. 屏幕是否需要逐页视图(配方页面)?
    • Fragment更好,因为Fragment + ViewPager提供灵活的分页功能.此外,某些Android设备或主题编辑器会覆盖活动打开效果,因此如果我们以"逐个活动"方式实现页面转动动画,则不会按预期运行.
  3. 屏幕是否执行相机或照片意图StartActivity
    • ActivityOnActivityResult当应用程序从相机应用程序恢复时,更难以管理内部碎片.出于这个原因,"写一个帖子"屏幕可能是一个单一活动的好例子.
  4. 无论屏幕开/关(定时器),屏幕都必须运行吗?
  5. 屏幕是否具有一种主 - 细节层次结构?
    • Fragment 更好,因为我们可以准备平板电脑布局.
  6. 屏幕消耗了很多内存吗?
    • Activity 更好,因为我们可以专注于活动而不是内部碎片的内存使用.
  7. 屏幕是否有超过3深度的嵌套片段?
    • Fragment,不情愿.片段之间的通信不稳定,活动片段桥接/跳舞总是头痛1 2.我们可以降低复杂性,但是Activity-inside-Fragment-inside-ViewPager-inside-fragment -...很难实现可管理性.

专业的Android开发人员建议使用multi Fragmentwith single Activity,但我们可以决定创建更多活动,以便更轻松地管理和更快地理解.

在您的情况下,我想实现如下组件.

  • 主要活动与碎片:成分,类别,食谱.
  • 带有片段的ResultActivity:搜索及其结果是一种主 - 详细视图.
  • TimerActivity:在单个Activity中运行应该是好的.
  • RecipeActivity:如果每个配方都有自己的ID并且可以作为固定链接共享,您的应用可以通过RecipeActivity直接打开配方页面.而且,即使您的应用程序从关闭状态恢复或从其他应用程序状态切换回来,显示配方也可能更好.