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

时间:2016-10-16 11:00:15

标签: android android-fragments android-activity

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

有关于成分,类别和时间的单独“页面”,我已经为每个创建了一个活动。用户首先选择成分,然后当他们单击“下一步”时,将启动类别活动,然后再单击“下一步”时,将启动准备时间活动。然后当他们点击搜索时,我有另一个结果活动,当用户点击结果中的一个食谱时,另一个用于显示食谱的活动开始。

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

  • IngredientActivity
  • CategoryActivity
  • TimeActivity
  • ResultActivity
  • RecipeActivity

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

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

我的想法是正确的方法吗?或者我应该只对整个应用程序进行一次活动,并且只使用片段完成剩下的活动吗?

1 个答案:

答案 0 :(得分:11)

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

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

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

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

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