如果任何静态变量被破坏,它们都会被销毁吗?

时间:2013-07-15 00:50:18

标签: java android static null destroy

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

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

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

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

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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