重复的活动初始化和内存使用

时间:2012-09-07 15:00:47

标签: android memory android-activity

感谢您阅读问题,虽然这是一个真正的noob-ish ...

Android系统如何管理与活动初始化有关的内存,特别是如果通过其他活动初始化活动?这在我的脑海中一直是一个挥之不去的问题,但我会尝试用一个例子来说明:

假设我有3项活动 - A B C - 活动 A 是应用程序第一次启动时启动。现在,假设活动 A 有按钮导航到 B C 活动,这些活动是使用Android的startActivity()功能启动的,传递Intent个实例。同样地,让我们说活动 B C 有按钮来启动他们的对应活动...到目前为止有意义吗?

现在,如果我然后使用startActivity()

  • 从活动 A
  • 开始活动 B
  • 然后从活动 B
  • 开始活动 C
  • 然后从活动 C
  • 开始活动 A
  • 然后无限期地重复上述步骤(所以绕圈子)

...假设Android系统“知道”活动已经先前已经启动并且不会重新初始化它们并杀死越来越多的内存,这是公平的,而是调用像{ {1}}更确切地“切换”回已经初始化的活动实例的功能?

对一个非常简单的问题/问题的一个解释......如果已经在其他地方被问过并回答过道歉......我在其他地方找不到明确的答案,即使在阅读{{3}时也是如此Android开发者网站上的部分。

1 个答案:

答案 0 :(得分:7)

答案是:这取决于。 : - )

如果您使用 A B C 活动的标准设置,您的应用程序将耗尽内存。原因是Android会将每个活动保留在“后台堆栈”中,允许用户通过按下后退按钮来导航回来。

但是,如果您在android:launchMode文件中将活动的singleTop设置为AndroidManifest.xml,则Android会通过调用{{1}将意图路由到正在运行的活动实例在活动中。

您可以在Android Developer Documentation中了解有关启动模式的更多信息。