2015-07-01 189 views
1

我习惯于HTML开发。现在我开始编写我的第一个Android应用程序。在我看过的教程中,它看起来像Android开发者喜欢为每种不同的表单使用新的活动。Android上真正需要多功能吗?

无所谓我认为使用单个活动并使用setVisibility(View.VISIBLE | View.INVISIBLE)来显示/隐藏GUI表单元素是非常可能的(这与我用于HTML-AJAX)。

这种Android开发方式有什么问题吗?使用单一活动(进程)还允许使用单例在GUI组件之间共享状态和数据,而多活动则需要使用额外数据传递选定标识的“稍微”复杂的通信系统,...

我想知道单个Activity“模式”有什么缺点,以及为什么Internet上的教程/手册没有使用这种技术来开发Android应用程序。

当我无意/有兴趣重新使用组件时,片段是否比显示/隐藏视图有优势?

+1

而不是预先加载_all_ UI(可能是_very_时间/资源消耗),您可以轻松地将它们交换到同一个“活动”中。例如。 'container.removeView(电流); container.add(NewView的);'。请参阅[本文]的“自定义视图”部分(https://corner.squareup.com/2014/10/advocating-against-android-fragments.html)。 – nhaarman

+0

你用HTML描述的是一个单页面应用程序方法。相对较少的Web应用程序是单页应用程序。你可以构建它们,并且这样做有一些优点,并且有一些框架可以使它更容易实现。然而,没有人强迫Web开发人员制作单页Web应用程序AFAIK,并且制作此类应用程序的成本也很高。如果退后一步,想一想单页Web应用程序的问题,那么您可能会发现,与单活动Android应用程序有关的这些问题有类似之处。 – CommonsWare

+0

在这个问题看一看:http://stackoverflow.com/questions/27725473/why-not-always-use-fragments-with-one-activity/27726891#27726891 – kha

回答

2

方法:单活动:

  • 这种做法将展示基于与应用程序的用户交互/隐藏UI元素。显示UI元素将从该元素开始绘制View层次结构。这被称为布局通行证。计算性能时,此布局过程非常昂贵。这不是可行的实施方式。

方法:单活动,多片段:

  • 这种方法也有单人活动,但这一活动的多个片段。每个片段根据应用需求定义新的UI屏幕。更多详细信息:Android Developer Guide : Fragments这是实现您的要求的更好的方法
1

我认为没有错,但取决于你的应用程序的复杂程度,源代码很容易变得非常混乱!

0

你想那些代码发生:

elementXScreenA.setVisibility(false); 
elementYScreenA.setVisibility(false); 
elementZScreenA.setVisibility(false); 

elementXScreenB.setVisibility(true); 
elementYScreenB.setVisibility(true); 
elementZScreenB.setVisibility(true); 

然后,过也许这:

elementXScreenB.setVisibility(false); 
elementYScreenB.setVisibility(false); 
elementZScreenB.setVisibility(false); 

elementXScreenC.setVisibility(true); 
elementYScreenC.setVisibility(true); 
elementZScreenC.setVisibility(true); 

不,我不希望这样做!

这只是基于你有趣的方式。这样做有很多缺点,我认为这种方法没有任何优势。我可以列出一些。任何意见将添加到此列表中:

  1. 设计UI。如何在一个xml布局文件上编写多布局? Android Studio不支持这一点。你会看到元素重叠元素
  2. 性能。加载所有的应用程序UI并不是一种智能的方式。你失去了内存,丢失了CPU。尽管你设置了不可见,你的记忆仍然存储这些信息,并且当元素之间的转换,不可见的元素仍然计入。
  3. 可维护。我正在与一个中型项目合作,每天仍然头痛,并且越来越大的碎片和活动。 (在每个活动/片段的每个布局的情况下)。当你把所有的布局整合到一个活动中时,一切都会变得如何?
  4. 合作。一个文件中的所有布局。所有的应用程序在一个文件中。你怎样才能在成员之间进行协作?代码冲突,编辑错误... Noooo。停止:)

号停止。当元素需要此元素时,您只需使元素不可见。例如,当用户向下滚动列表时浮动按钮,没有错误需要显示时的错误消息文本框,...

+0

Downvoter?有什么意见吗?如果您不满意我的回答,请告诉我。或者,我可以删除这个“无用”的答案:) – hqt

+0

关于你提到了一些疑惑: - 多布局可通过编程新的充气意见完成。那是对的吗? - 在性能方面,也许container.add /删除是(多)更好的方法来节省内存(我不知道这种可能性)。 - 至于合作,我认为这将是更好地隔离不同的开发工作“变成了”不同的活动,但是这不是我在这个momment关注。我想你在这种情况下是完全正确的。 (我刚开始使用Android开发,试图用一些形式制作一个简单的应用程序,而且我正在单独工作)。 – earizon

+0

您仍然可以让多个人在该项目上工作。只要定义一个UI每个XML文件中设置,然后将它们包括到一个“父” xml文件 –