java - Android 应用保留 Activity 类的静态数据成员

标签 java android

我在我的 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/

相关文章:

java - 从给定的 .txt 文件中提取整数

android - 我可以在 Android 布局中为文本添加下划线吗?

java - 在 JNI 中返回多维数组

android - 触发onPreferenceClick时如何动态填充ListPreference?

java - 如何配置单线程ForkJoinPool?

java - 在android ListView上查看特定应用程序的权限名称

android - 无法在 MacOSX 上的 Android Studio 之外启动 Android Emulator

java - Android 上的 JXTA 应用程序

java.lang.OutOfMemory错误: Java heap space with array of 100 objects

Java setBackground() 混淆