有太多的活动会影响我的表现吗?

时间:2017-07-01 17:06:19

标签: android performance android-activity stack

所以,我有近20个活动,因为我有近20个布局,其中有重要信息(关于应用内容)。好吧,我不得不说在这些活动中主要是TextViews。

是否有可以放置活动的“堆栈”?如果有堆栈,它是否会影响运行应用程序时的性能?我怎么能看到这个堆栈?

应用程序应该具有多少活动规则,还是取决于应用程序的用途是什么?

如果您可以解释我在运行应用程序时如何处理活动或如何处理这些活动,那将是很好的。因为我不希望这20项活动影响我的表现。

4 个答案:

答案 0 :(得分:3)

第一个问题:

  

有没有像#" Stack"活动可以放在哪里?如果   有一个堆栈,它会影响运行应用程序时的性能吗?   我怎么能看到这个堆栈?

是的,您可以在一个任务中安排活动,以便在后台堆栈中组织它们。请参阅有关如何使用它们的文档。

  

任务是用户与之交互的活动的集合   从事某项工作。活动安排在堆栈中   后面的堆栈) - 按每个活动打开的顺序排列。对于   例如,电子邮件应用可能有一个活动来显示新的列表   消息。当用户选择消息时,将打开一个新活动   查看该消息。此新活动将添加到后台堆栈中。如果   用户按下后退按钮,新活动结束   弹出堆栈。以下视频提供了一个很好的概述   后堆如何工作。

来源:https://developer.android.com/guide/components/activities/tasks-and-back-stack.html

第二个问题:

  

应用程序应该拥有或执行的活动数量是否存在规则   取决于应用程序的用途是什么?

是的,您的应用需要的活动数量取决于用例,甚至是您构建项目的风格。您也可以使用Fragments并在需要时在一个Activity中替换它们。两种方式都有它们的优点和缺点。

答案 1 :(得分:2)

在一个活动中分层排列20个活动或在一个活动中运行20个类之间没有性能差异。恰恰相反,前者会有更好的表现,因为你可以动态地添加/删除活动,而后者则会有固定的负载。

答案 2 :(得分:2)

这20个活动只会影响你的apk大小。但如果他们只有一个TextView,这将不会很大。

如果用户浏览了所有20个活动,并且它们被保存在堆栈中,类似于活动A调用活动B,调用活动C ...,您的活动堆栈将会太大而且可能是android会破坏最旧的活动释放资源。有了这个,实现所有活动生命周期并将数据保存在bundle中是非常重要的,这样当用户返回到您的活动时,您可以从头开始以与之前完全相同的状态重新创建它。

- 编辑 -

正如@CommonsWare在评论中指出的那样,Android不会杀死你最老的活动,请在他的博客中查看这篇文章,了解你的案例是否符合我在答案中描述的内容:https://commonsware.com/blog/2011/10/03/activities-not-destroyed-to-free-heap-space.html

答案 3 :(得分:1)

这取决于你如何使用它们。如果您了解活动的生命周期

Activities Lifecycle

你会看到,如果你在堆栈上保留了很多活动,那么你就会失去性能,但是如果你摧毁它们,你就不会。你只会影响apk大小。