Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android垃圾收集器-静态(类级别)变量何时重置?_Java_Android - Fatal编程技术网

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

Java Android垃圾收集器-静态(类级别)变量何时重置?,java,android,Java,Android,Android如何处理静态类?特别是,如果我声明如下静态变量: private static boolean someBoolean = true; ... // Somewhere else in the code I do this: someBoolean = false; 我们还假设最后一行是someBoolean的值从其初始化值更改的唯一时间。someBoolean将停留多长时间false?用户如何重置此项?强制关闭应用程序是否有效?你必须卸载应用程序吗?清除数据?它的缓存

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

private static boolean someBoolean = true;
...
// Somewhere else in the code I do this:
    someBoolean = false;
我们还假设最后一行是
someBoolean
的值从其初始化值更改的唯一时间。
someBoolean
将停留多长时间
false
?用户如何重置此项?强制关闭应用程序是否有效?你必须卸载应用程序吗?清除数据?它的缓存


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

卸载类时,静态变量
someBoolean
将符合GC的条件

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


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

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


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

该类何时卸载?请阅读此线程啊,因此这是特定于Java的,与Android应用程序生命周期没有任何联系?Android Dalvik VM主要与JVM类似,但有一些例外。但是,是的,Dalvik VM也遵循类似的功能。所以,它们是在一起的。@DarrenGreen Android(从程序员的角度来看)运行标准Java 5/6,所以Android不能改变静态之类的基本行为。它只是由系统管理的应用程序启动/停止。不是在桌面上启动或停止应用程序的明确方式(因此没有退出按钮)。。。但是,在后台,这个过程最终会被扼杀。是的,但你不能指望它。你不应该假设你的应用程序即使在后台,静态变量也会保持它们的值。纠正依赖它从来不是一个好的做法。这就是为什么Android提供了几种生命周期方法,在这些方法中,您可以持久化应用程序状态……为了确认,如果某个活动位于前台,任何静态变量都不会被垃圾收集,对吗?