静态变量失去价值

时间:2011-12-19 15:53:09

标签: android

我正面临一个关于我正在我的项目中使用的静态变量的问题(它包含文件中的一些字段)。在某些情况下,变量会失去她的价值,而不是总是如此。 我已经读过静态变量的生命周期,她在3种情况下失去了价值:

1)卸载班级。

2)JVM关闭。

3)过程终止。

所以我有一个问题:还不足以重写onResume上的活动并再次解析文件并再次提供静态变量吗?

2 个答案:

答案 0 :(得分:2)

如果你真的必须使用static / globals将它们放入扩展Application的自定义类中。像这样:

public class FooApplication extends Application {
    protected Bar myBar;

    public Bar getBar() { return myBar; }
    public void setBar(Bar bar) { myBar = bar; }
    ...
}

声明您将使用清单使用自定义Application类。

<application
    android:icon="@drawable/ic_launcher_noteit1"
    android:label="@string/app_name" 
    android:theme="@style/App_Theme"
    android:name="FooApplication" 
    android:debuggable="true">

现在,您可以使用(FooApplication) getApplication()从任何活动访问您的应用程序对象。请注意,这不是推荐的方法。推荐的方法是使用单例模式。

如果解析文件是一项昂贵的操作,您可能不希望在每个onResume上解析它。相反,您可能需要考虑使用onRetainNonConfigurationInstance()

答案 1 :(得分:1)

首先,我想确保您不会无意中重置该变量。为此,您可能需要创建getMyVariable()setMyVariable()函数,将一些日志记录到它们中并使用它们而不是直接访问变量。