当我开始我的 Android 项目时,我有一个误解,即应用程序中显示的每个屏幕都必须是一个新活动。现在我已经完成了这个项目,我已经在我的模拟器以及几部安卓手机上检查了它。到目前为止,我没有看到任何问题,但最近我在某处读到应用程序中的太多活动是一个非常糟糕的主意。
目前我的应用程序有大约 15-20 个活动。理想情况下,我听说应该在 5-6 个左右。我是否需要重新构建我的代码或只是在完成每个活动后才完成它的一部分就足够了?
当我开始我的 Android 项目时,我有一个误解,即应用程序中显示的每个屏幕都必须是一个新活动。现在我已经完成了这个项目,我已经在我的模拟器以及几部安卓手机上检查了它。到目前为止,我没有看到任何问题,但最近我在某处读到应用程序中的太多活动是一个非常糟糕的主意。
目前我的应用程序有大约 15-20 个活动。理想情况下,我听说应该在 5-6 个左右。我是否需要重新构建我的代码或只是在完成每个活动后才完成它的一部分就足够了?
在创建复杂的应用程序时,您肯定需要创建许多活动。因此,这取决于您的应用程序需要多少活动。项目中的任何活动都不会影响绩效。
效果是由你的 android 堆栈中的活动数量产生的。因此,最好在堆栈中保留 5-6 个活动(如果不再需要,请完成活动)。
因此,根据您的应用程序需求创建尽可能多的活动,但一次保持较少的活动打开。
如果您的项目有很多活动,但有些活动并不重要,则意味着您在另一个活动开始后不需要任何活动。
在清单文件集中:android:noHistory="true"
例子:
Activity1 -> Activity2 -> Activity3 -> Activity4..................-> Activity20
在清单文件中:
activity android:name=".Activity1" android:label="@string/app_name" android:noHistory="true"
如果您使用 Intent 再次调用 Activity1,而不是在 startActivity() 之前设置 finish()
我认为这可以帮助你
Android 系统试图尽可能长时间地维护一个应用程序进程,但最终需要移除旧进程来为新的或更重要的进程回收内存。这适用Activity
于在后台运行的 s...旧Activity
的 s 为您管理,并在系统需要为新进程回收内存时被销毁。
话虽如此,我认为您应该考虑两件事:
用户体验。您的应用程序真的需要 15-20Activity
秒吗?你能以某种方式减少屏幕数量吗?Activity
s 通常越少越好,因为它在用户导航应用程序时需要更少的交互。
代码设计。虽然每个Activity
都有自己独立的类,但这并不限制您在实现应用程序时做出明智的设计决策。例如,您可以尝试通过让相似Activity
的 s 扩展一个 s 来对它们进行分组abstract class
。随着 Android 项目规模的扩大,它们变得更加难以管理。以这种方式在类似的类之间共享代码将确保您可以对应用程序的核心进行简单的更改,而不会带来太多麻烦。
[编辑] - 从 Google IO 2018 开始,Google 建议使用包含多个片段的单个活动。需要考虑的事情。
这最终取决于你在做什么。有时您无法对视图进行足够的修改以产生影响。理想情况下,5-6 次活动很棒,但在某些情况下,这不仅是不可行的。我已经完成了一个包含大约 40 个不同课程和大约 18 个活动的移动应用程序。只是必须根据应用程序与用户交互的方式来完成。如果您可以将 2 或 3 个活动合并为一个,那就太好了。它也有助于文件大小和优化,但如果你不能 - 不要太担心它。
我会说 15 个不同的屏幕 = 15 个不同的活动。我认为一些能够减少活动数量的原因之一是因为引入了片段。尽管有人会争论如果单个活动有效,为什么要使用片段。我想这取决于开发人员的偏好。
使用片段比使用活动更好。我们可以在单个活动中使用多个片段,因此我们应该始终考虑使用片段。我见过具有 5-6 个活动和 150 多个片段的复杂应用程序。