首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我应该在应用程序中使用片段或活动吗?

问我应该在应用程序中使用片段或活动吗?
EN

Stack Overflow用户
提问于 2016-10-16 11:00:15
回答 1查看 4.8K关注 0票数 1

我知道这个问题可能被问了很多次,但我想得到一个具体的答案,因为我正在开发的应用程序。我正在创建一个Android应用程序,它基本上是一个食谱搜索应用程序,允许用户选择配料、食品类别和准备时间,应用程序会找到适合用户搜索的菜谱。

有个人的“页面”的成分,类别和时间,我已经创建了每个活动。用户首先选择成分,然后单击Next,开始类别活动,然后再次单击Next,就会出现准备时间活动。然后,当他们单击Search时,我有另一个搜索结果的活动,当用户单击结果中的一个菜谱时,另一个显示菜谱的活动就开始了。

因此,我有以下活动,每个活动按以下顺序开始:

  • IngredientActivity
  • CategoryActivity
  • TimeActivity
  • ResultActivity
  • RecipeActivity

我做了一些阅读,发现我可能应该使用片段。我的计划是改变我的应用程序,让它有一个标签活动,三个标签的成分,类别和时间,并有一个搜索按钮在底部显示在所有三个片段,使用户可以轻松切换标签和搜索,从任何一个标签,他们目前正在查看。至于结果和展示食谱,我想离开各自的活动,因为他们是。搜索按钮启动ResultActivity,单击单个搜索结果启动RecipeActivity并显示用户单击的菜谱。

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-16 13:04:31

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

让我举例介绍一些决定。

  1. 屏幕是否需要从外部启动(共享意图)?
    • Activity更好,因为它可以直接从AndroidManifest提供的内容中打开。

​

  1. 屏幕需要逐页查看(食谱页)吗?
    • Fragment更好,因为Fragment+ViewPager提供了灵活的分页功能。此外,一些Android设备或主题编辑器覆盖活动打开效果,因此,如果我们以活动逐活动的方式实现,页面翻转动画就不会按预期运行。

​

  1. 屏幕是否使用StartActivity?执行相机或照片意图?
    • Activity更好,因为当应用程序从相机应用程序恢复回来时,OnActivityResult很难管理内部片段。因此,“写帖子”屏幕可能是一个很好的例子,可以作为一个单一的活动。

​

  1. 屏幕是否必须运行,而不管是否打开/关闭(计时器)?
    • Activity更好,因为它可以在没有活动-片段舞的情况下更快、更轻地出现。

​

  1. 屏幕有一种主细节层次结构吗?
    • Fragment更好,因为我们可以准备平板布局。

​

  1. 屏幕占用内存很多吗?
    • Activity更好,因为我们可以只关注活动,而不是内部片段内存的使用。

​

  1. 屏幕是否有超过3深度的嵌套片段?
    • Fragment,很不情愿。片段间的交流不稳定,活动片段的桥接和跳舞总是让人头疼的,1,2。我们可以降低复杂度,但Activity-inside-Fragment-inside-ViewPager-inside-fragment-...很难达到可管理性。

​

专业的安卓开发人员推荐使用多个Fragment和单一Activity,但我们可以决定创建更多的活动,以便更容易地管理和更快地理解。

在您的例子中,我想实现如下组件。

  • 带有片段的MainActivity :成分、类别、配方。
  • 带有片段的ResultActivity :搜索及其结果是一种主细节视图.
  • TimerActivity:在单个活动中运行应该是件好事。
  • RecipeActivity:如果每个菜谱都有自己的id,并且可以作为permalink共享,那么应用程序可以通过RecipeActivity直接打开菜谱页面。而且,即使您的应用程序是从关闭或从另一个应用程序情况下恢复过来的,显示配方也可能更好。
票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40069503

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档