Android中的活动太多了?

时间:2012-04-06 15:20:43

标签: android optimization android-activity

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

目前我的应用程序有大约15-20个活动。我觉得它应该是5-6左右。我是否需要重新构建我的代码,或者只是在完成所有活动后完成它的部分就足够了?

6 个答案:

答案 0 :(得分:32)

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

效果是由你的android堆栈中的活动数量产生的。因此最好将5-6个活动保留在堆栈中(如果不再需要则完成活动)。

因此,请根据您的应用程序需求创建尽可能多的活动,但同时保持较小的活动数量。

答案 1 :(得分:8)

如果您的项目有许多活动,但某些活动并不重要,则意味着您在另一项活动开始后不需要任何活动。

在清单文件集中:android:noHistory="true"

示例:

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

在清单文件中:

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

如果你使用Intent再次调用Activity1而不是在startActivity()之前调用finish()

我认为这可以帮到你

答案 2 :(得分:3)

[编辑] - 从Google IO 2018开始,Google建议使用包含许多片段的单个活动。需要考虑的事情。

这最终取决于你在做什么。有时您无法修改视图以产生影响。理想情况下,5-6个活动很棒,但有些情况不仅不可行。我做了一个移动应用程序,有大约40个不同的类,大约18个活动。它只是根据应用程序与用户交互的方式完成。如果您可以将2个或3个活动合并为一个,那太好了。它也有助于文件大小和优化,但如果你不能 - 不要担心太多。

答案 3 :(得分:3)

Android系统尝试尽可能长时间地维护应用程序进程,但最终需要删除旧进程以回收新内存或更重要进程的内存。这适用于在后台运行的Activity ...旧的Activity是为您管理的,当系统需要回收新进程的内存时会被销毁。

话虽如此,我认为你应该考虑两件事:

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

  2. 代码设计。虽然每个Activity都有自己独立的类,但这并不会限制您在实现应用程序时做出明智的设计决策。例如,您可以尝试通过扩展Activity来对类似的abstract class进行分组。随着Android项目规模的扩大,它们变得更加难以管理。以这种方式在类似的类之间共享代码将确保您可以毫不费力地对应用程序的核心进行简单的更改。

答案 4 :(得分:1)

我会说15种不同的屏幕= 15种不同的活动。我认为一些能够减少活动数量的原因之一是因为片段的引入。虽然有人会争论为什么在个人活动有效的情况下使用片段。我想这取决于开发者的偏好。

答案 5 :(得分:-1)

使用片段胜于活动。我们可以在一个活动中使用多个片段,因此我们应该始终考虑使用片段。我看到了5-6个活动和150多个片段的复杂应用程序。