Android:杀死每个活动是否相当于摧毁整个应用程序?

时间:2017-08-19 16:40:30

标签: android android-activity static

我的应用程序包含2个活动,它们都依赖于一些静态对象。我很好奇,如果两个活动都被销毁(例如当设备耗尽mem时),android会终止整个应用程序并清理我的静态字段吗?

1 个答案:

答案 0 :(得分:2)

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

静态变量的生命周期:一个静态变量在JVM加载一个类时就存在,并在卸载该类时死掉。

因此,如果您创建一个Android应用程序并初始化一个静态变量,它将保留在JVM中,直到出现以下情况之一:

  1. 该类已卸载

  2. JVM关闭

  3. 流程终止

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

    您可以使用几行代码进行测试:

    • 在您活动的onCreate中打印未初始化的静态 - >应该打印null

    • 初始化静态。打印它 - > value将为非null

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

    • 再次启动您的活动 - >静态变量将为非null

    • 从DDMS(设备窗口中的停止按钮)终止您的申请流程。

    • 重新开始您的活动 - > static将具有null值。

    你的问题的答案。 是的,如果您的所有活动都被销毁,您的申请流程将被终止。

    积分 Samuh