Android 垃圾收集器 - 何时重置静态(类级别)变量



Android 如何处理静态类?特别是,如果我声明一个这样的静态变量:

private static boolean someBoolean = true;
...
// Somewhere else in the code I do this:
    someBoolean = false;

我们还假设最后一行是 someBoolean 的值从其初始化值更改的唯一时间。someBoolean false会停留多久?用户如何重置此设置?强制关闭应用程序会起作用吗?您必须卸载该应用程序吗?清除其数据?它的缓存?

如果这个静态变量在别人的 SDK 中怎么办?我想我理解变量在我编写的应用程序代码中时是如何重新实例化的,但是如果这是从某个 jar 加载的代码怎么办——someBoolean什么时候会被重新声明并随后初始化为 true?与上面类似,用户如何强制这种行为?强行关闭?清除数据?

静态变量在类加载器加载时初始化。每个虚拟机实例至少都有一个类加载器。任何操作系统上的每个Java进程都将有一个虚拟机。因此,要重置变量,您必须强制终止/停止该过程。请记住,在 Android 中,与活动关联的进程将继续保留在后台,因此即使在活动暂停后也会保留其所有静态变量。

您可以使用 DDMS 验证此行为,并强制终止与您的活动关联的进程。

当类被卸载时,静态变量someBoolean将有资格使用 GC。

someBoolean将在类启动时(加载后)启动。

someBoolean保持 false,直到在代码中设置另一个值。

最新更新