3

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

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

还可以说最后一行是唯一 timesomeBoolean的值从其初始化值发生变化。会someBoolean停留false多久?用户如何重置?强制关闭应用程序会起作用吗?你必须卸载应用程序吗?清除其数据?它的缓存?

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

4

2 回答 2

4

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

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

于 2012-09-18T18:30:41.270 回答
2

卸载类时,静态变量someBoolean将有资格进行 GC。

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

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

于 2012-09-18T18:22:32.600 回答