java - Android 垃圾收集器 - 静态(类级别)var 何时重置?

标签 java android

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

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

我们还可以说,最后一行是 someBoolean 的值从其初始值发生变化的唯一一次。 someBoolean 将保持 false 多长时间?用户如何重置这个?强制关闭应用程序会起作用吗?您必须卸载该应用程序吗?清除其数据?它的缓存?

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

最佳答案

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

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

关于java - Android 垃圾收集器 - 静态(类级别)var 何时重置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12482744/

相关文章:

android - 使用 AES (MODE_CBC/NoPadding) 解密 iOS 中用 Python 加密的文件

android - 在应用程序中接受信用卡付款

android - 尝试在空对象引用上调用虚拟方法 'void android.widget.TextView.setText(java.lang.CharSequence)'

java - 如何从 setter 内部检查整个对象

java - 像位图一样保存 View ,我只会黑屏

java - 从 Java 中的纪元时间返回 ISO-8601 时间格式(以天为单位)

java - Android:ScrollView不会滚动

android - cordova相机copyFile错误代码1000

java - 从 Spatial4j Geocircle 对象获取 JTS 几何图形的最佳方法

java - SQL : Joining a table with an unkown key that should be auto incremented