Android:杀死每个活动相当于摧毁整个应用程序?
问题描述:
我的应用程序包含2个活动,它们都依赖于一些静态对象。我很好奇,如果两个活动都被销毁(例如设备用完mem),android会终止整个应用程序并清理静态字段?Android:杀死每个活动相当于摧毁整个应用程序?
答
让我们从一点背景开始:当你启动一个应用程序时会发生什么? 操作系统启动一个进程并为其分配一个唯一的进程ID并分配一个进程表。一个进程启动一个DVM实例(Dalvik VM);每个应用程序在DVM中运行。 一个DVM管理类加载卸载,实例生命周期,GC等。
静态变量的生存期:静态变量在类被JVM加载时死亡并在类卸载时死亡。
因此,如果您创建一个Android应用程序,并初始化静态变量,它会留在JVM中,直到发生下列情况之一:
类被卸载
JVM关闭
过程中死亡
请注意,当您切换到其他应用程序的不同活动时,静态变量的值将保持不变,并且上述三项都不会发生。如果上述三种情况发生,静态将失去其价值。
您可以用几行代码测试:
打印未初始化的静态在活动的onCreate - >应打印空
初始化静态。打印它 - >值将是非空
点击后退按钮并进入主屏幕。注意:主屏幕是另一项活动。
再次启动你的活动 - >静态变量为非空
杀死从DDMS您的应用程序(在设备窗口停止按钮)。
重新启动您的活动 - >静态将具有空值。
您的问题的答案。 是的,如果你的所有活动都被破坏了,你的申请程序将被杀死。
现金Samuh
是的,我注意到that.My的问题是将Android应用程序杀的过程,如果它的所有活动都被破坏? – undefined
是的,如果你的所有活动都被破坏了,你的申请程序将被杀死。 –
非常感谢!您能否将此添加到您的答案中,以便将其标记为已接受? – undefined