2012-04-06 40 views
11

当我开始我的Android项目时,我误解了应用程序中显示的每个屏幕必须是新的活动。现在我已经完成了这个项目,我已经在我的模拟器以及一些安卓手机上进行了检查。到目前为止,我并没有目睹任何问题,但是最近我在某处读到,应用程序中的太多活动是一个非常糟糕的主意。Android中的活动过多?

目前我的应用程序有大约15-20 activities.Ideally我听到它应该在5-6。我是否需要重新构造我的代码,或者在完成它的部分就完成每个活动就足够了?

回答

30

在创建复杂的应用程序时,您肯定需要创建许多活动。所以这取决于你的应用程序需要多少活动。项目中的活动数量不会影响性能。

的影响是由活动在你的Android的堆栈数产生的。所以最好将5-6个活动保存在堆栈中(如果不再需要它们,则完成活动)。

因此,创建尽可能多的活动,您的应用需求,但保持较小的无活动同时开放。

+2

+1为好的解释。 – Deva 2012-04-06 15:54:25

+0

如何完成活动? – 2016-01-04 02:04:42

+1

我有15个活动,用户不断打开。我是否需要做任何事来结束以前的活动?谢谢! (+1) – 2016-01-04 02:07:53

2

这最终取决于你在做什么。有些时候,你无法修改视图足以产生影响。理想情况下,5-6项活动非常棒,但有些情况并非不可行。我已经完成了大约40个不同类别的移动应用程序,以及约18项活动。它只是基于应用程序如何与用户进行交互而完成的。如果你可以将2或3个活动合并成一个,那很好。它也会帮助文件大小和优化,但如果你不能 - 不要太担心。

1

我会说15米不同的屏幕= 15个不同的活动。我认为有些人能够减少活动的原因之一是因为引入了碎片。虽然人们会争论为什么在个人活动有效时使用碎片。我想这取决于开发人员的偏好。

+0

除非你正在做的事情,这将眼光放在平板电脑好,使用碎片。 – 2012-04-06 15:33:01

+0

我有15个活动,用户不断打开。我是否需要做任何事来结束以前的活动?谢谢! (+1) – 2016-01-04 02:06:42

3

Android系统试图维持一个应用程序,只要有可能,但最终需要删除旧的流程,以回收内存为新的或更重要的进程。这适用于在后台运行Activity小号......老Activity s的为你管理,当系统需要回收内存的新工艺被破坏。

话虽这么说,我觉得有两件事你应该考虑:

  1. 用户体验。你的应用真的需要15-20 Activity吗?你能否以某种方式减少屏幕的数量?少于Activity s通常更好,因为当用户在浏览应用程序时,它需要较少的交互。

  2. 代码设计。虽然每个Activity都有自己的独立课程,但这并不会限制您在实施应用程序时做出明智的设计决策。例如,您可以尝试分组Activity,方法是将它们扩展为abstract class。随着Android项目规模的扩大,他们变得更难以管理。以这种方式在类似的类中共享代码将确保您可以对应用程序的核心进行简单的更改,而不会有太多的麻烦。

+0

我有15个活动,用户不断打开。我是否需要做任何事来结束以前的活动?谢谢! (+1) – 2016-01-04 02:06:24

6

如果你的项目有很多活动,但是有些活动是不重要的,这意味着你不需要相继活动开始的任何活动。

在清单文件组:android:noHistory="true"

实施例:

Activity1 -> Activity2 -> Activity3 -> Activity4..................-> Activity20 

在清单文件:

activity android:name=".Activity1" android:label="@string/app_name" android:noHistory="true" 

如果u活性1使用意图比startActivity前组面漆()再次调用()

我认为这可以帮助你