我在我的 MainActivity 类中声明了一个静态成员,如下所示:
public class MainActivity extends Activity {
public static int logNum = 0;
...
}
我在其他方法中递增此变量值。
奇怪的是,当我关闭此应用程序并再次运行时,该值并未初始化为零,而是采用最后增加的值。
我在 Eclipse 模拟器上运行它。是模拟器问题吗?
我不想要解决方案。我显然可以在 onCreate()
方法中将变量初始化为零。只是想知道为什么??
而且我没有点击主页按钮而是点击后退按钮,并且还检查了 onDestroy()
是否被调用。
最佳答案
静态数据会一直存在,直到发生以下情况之一:
VM 终止。
进程终止。
类已卸载。
现在,据我所知,Dalvik 不会卸载类,因此静态变量的生命周期实际上与进程的生命周期相关联。
即使在 Activity 上调用了 onDestroy()
,出于缓存目的,进程本身也可以无限期地运行。当您重新启动该应用程序时,该缓存副本将被带回。
进一步阅读:http://developer.android.com/guide/components/processes-and-threads.html
现在,在一个 Activity 中有一个 public static
变量的代码被修改后确实有一些难闻的气味......
关于java - Android 应用保留 Activity 类的静态数据成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20971829/