我的应用程序包含2个活动,它们都依赖于一些静态对象。我很好奇,如果两个活动都被销毁(例如当设备耗尽mem时),android会终止整个应用程序并清理我的静态字段吗?
答案 0 :(得分:2)
让我们从一些背景知识开始:启动应用程序时会发生什么? 操作系统启动一个进程并为其分配一个唯一的进程ID并分配一个进程表。一个进程启动一个DVM实例(Dalvik VM);每个应用程序都在DVM中运行。 DVM管理类加载卸载,实例生命周期,GC等。
静态变量的生命周期:一个静态变量在JVM加载一个类时就存在,并在卸载该类时死掉。
因此,如果您创建一个Android应用程序并初始化一个静态变量,它将保留在JVM中,直到出现以下情况之一:
该类已卸载
JVM关闭
流程终止
请注意,当您切换到另一个应用程序的其他活动时,静态变量的值将保持不变,并且上述三个活动都不会发生。如果上述三种情况中的任何一种发生,静电将失去其价值。
您可以使用几行代码进行测试:
在您活动的onCreate中打印未初始化的静态 - >应该打印null
初始化静态。打印它 - > value将为非null
点击后退按钮,进入主屏幕。注意:主屏幕是另一项活动。
再次启动您的活动 - >静态变量将为非null
从DDMS(设备窗口中的停止按钮)终止您的申请流程。
重新开始您的活动 - > static将具有null值。
你的问题的答案。 是的,如果您的所有活动都被销毁,您的申请流程将被终止。
积分 Samuh