多个活动或单个活动和多个片段

时间:2017-07-03 08:21:47

标签: android android-fragments android-activity

我有一个非常普遍的问题,我没有找到我的问题的具体答案,因此再次提出。

我想在两种方法之间做出决定

  1. 各种各样的屏幕和任务的专门活动,以避免复杂性和问题
  2. 针对不同任务的单个活动和多个片段以及用户可以像活动持有片段一样导航用户将导航到片段B,片段C,这可以来回交易。
  3. 我想知道什么?

    1. 活动转换是否对处理器来说代价高昂或者实现简单的内存开销可以忽略不计?
    2. 片段有过渡管理生命周期的开销,那么生命循环器管理会带来什么问题呢?
    3. 通过保存片段的状态来处理片段事务有多容易?
    4. 我们现在还不知道有多少数据可供片段保留。

4 个答案:

答案 0 :(得分:9)

嗯,这完全取决于应用程序的设计,流程和导航。

以下是使用单一活动和多个碎片的一些好处:

  1. 性能片段事务比创建新活动快。
  2. 导航抽屉和工具栏,使用单一活动可以轻松管理。
  3. 可以在任何地方使用相同的上下文。
  4. Fragment的setRetainInstance在管理方向更改时非常有用。
  5. 有了它,这里有一些缺点:

    1. 使用大量代码,活动变得非常混乱。
    2. 处理按钮背压是繁琐的,因为只有Activity可以处理而不是碎片。
    3. 我个人使用具有多个片段的多个活动,其中我基于模块分离活动。在同一模块中,可以分段创建子模块。我发现在不同的场景中管理很容易,就像应用程序关闭,重新打开,通知,方向更改一样。

答案 1 :(得分:1)

我的问题是一样的,到目前为止,在我的所有应用程序中,只有一个活动,其余部分是碎片。我同意很难维护Fragment,但使用Fragment会提高你的性能。

假设举个例子,

我有10个活动,在每个活动中,我都在调用异步任务来执行一些后台操作。在每个异步任务的onPostExecute()中,您正在更新UI。但是在完成doInBackground()之前你切换了Activity并且Activity被销毁了,但是记住doInBackground()仍在进行中,一旦完成,将调用onPostExecute,而在onPostExecute()中我们正在更新UI,但活动被破坏,因此这会在您的应用中造成泄漏。 但是,如果您只维护一个Activity,那么它将很容易维护。

等待别人的意见。

答案 2 :(得分:1)

除了上面的答案之外,我要添加的几点可以帮助决定何时使用片段以及何时使用活动。

  • 如果您支持更大的屏幕尺寸,片段肯定比活动更受欢迎。
  • 如果你有一些你认为可以在多个屏幕中重复使用的代码,你可以使用一个可以在不同地方重复使用的片段

答案 3 :(得分:0)

支持“单个活动多个片段”的小点。

有时您可能需要一个组件(例如横幅广告)在您应用的不同网页/屏幕之间保留。如果您有多个Activities,则需要在每个Activities上重新创建该组件。但是如果你有一个Activity,你只需将该组件添加到Activity布局中就可以忘记它。