2017-08-19 21 views

回答

2

让我们从一点背景开始:当你启动一个应用程序时会发生什么? 操作系统启动一个进程并为其分配一个唯一的进程ID并分配一个进程表。一个进程启动一个DVM实例(Dalvik VM);每个应用程序在DVM中运行。 一个DVM管理类加载卸载,实例生命周期,GC等。

静态变量的生存期:静态变量在类被JVM加载时死亡并在类卸载时死亡。

因此,如果您创建一个Android应用程序,并初始化静态变量,它会留在JVM中,直到发生下列情况之一:

  1. 类被卸载

  2. JVM关闭

  3. 过程中死亡

请注意,当您切换到其他应用程序的不同活动时,静态变量的值将保持不变,并且上述三项都不会发生。如果上述三种情况发生,静态将失去其价值。

您可以用几行代码测试:

  • 打印未初始化的静态在活动的onCreate - >应打印空

  • 初始化静态。打印它 - >值将是非空

  • 点击后退按钮并进入主屏幕。注意:主屏幕是另一项活动。

  • 再次启动你的活动 - >静态变量为非空

  • 杀死从DDMS您的应用程序(在设备窗口停止按钮)。

  • 重新启动您的活动 - >静态将具有空值。

您的问题的答案。 是的,如果你的所有活动都被破坏了,你的申请程序将被杀死。

现金Samuh

+0

是的,我注意到that.My的问题是将Android应用程序杀的过程,如果它的所有活动都被破坏? – undefined

+1

是的,如果你的所有活动都被破坏了,你的申请程序将被杀死。 –

+0

非常感谢!您能否将此添加到您的答案中,以便将其标记为已接受? – undefined