1

如果任何静态变量被破坏,它们是否都被破坏了?这是我的OnCreate方法中的代码:

if (!LoadedData)
{
    LoadedData = true;
    SaveData = getSharedPreferences(FILENAME, MODE_PRIVATE);
    LoadData();
    if (MainActivity.ScreenWidth == 0 && MainActivity.ScreenWidthLandscape == 0)
        MainActivity.LoadData();
}

我的类第一次运行时,LoadedData 将具有默认值 false,从而导致保存的任何值被加载并存储在静态变量中。设备旋转后,此代码将无法运行,因为所需的所有值都保存在静态变量中,因此再次加载它们效率低下。问题是,如果一些静态变量被破坏,但不是全部,那么我的程序可能会崩溃。当静态变量被销毁时,它们会保持默认值吗?例如整数 = 0,布尔值 = false 等。

我无法测试静态变量是否被破坏。

4

3 回答 3

1

检查一个类的静态变量将告诉您该类是否已被销毁。这意味着您可以知道该类中的其他变量是否仍然正常。它不会告诉您其他类中的其他静态变量。

如果LoadedData已被销毁,那将是因为没有引用包含它的类。该类已完成并已收集垃圾。当系统再次加载它时,整个类将被重新初始化。

于 2013-07-15T02:26:41.827 回答
0

我不认为完整的应用程序会被破坏。我认为它只是活动。然后重新启动该活动。

到你的变量。如果它们是您的类的成员变量,那么它们会在类完成时被销毁(被销毁)。否则(变量不是任何类的成员)您可能会考虑将它们作为类变量,因为全局变量不是好的代码。

于 2013-07-15T01:11:03.553 回答
0

当您的设备被 Android 旋转或销毁时,您的整个应用程序将被销毁,并且所有变量都需要重新初始化。

于 2013-07-15T01:06:05.143 回答