我正面临着一个关于静态变量的问题,我正在使用我的所有项目(它包含文件中的一些字段)。在某些情况下,变量会失去她的价值,但并非总是如此。 我已阅读有关静态变量的生命周期,她丢失了3种情况下的值:静态变量丢失值
1)类被卸载。
2)JVM关闭。
3)过程死亡。
所以我有一个问题:是不是足够重写活动onResume并再次解析文件,并再次提供静态变量,如果它为空?
我正面临着一个关于静态变量的问题,我正在使用我的所有项目(它包含文件中的一些字段)。在某些情况下,变量会失去她的价值,但并非总是如此。 我已阅读有关静态变量的生命周期,她丢失了3种情况下的值:静态变量丢失值
1)类被卸载。
2)JVM关闭。
3)过程死亡。
所以我有一个问题:是不是足够重写活动onResume并再次解析文件,并再次提供静态变量,如果它为空?
如果你真的必须使用静态/全局把它们放到你的自定义类中,它扩展了Application。像这样:
public class FooApplication extends Application {
protected Bar myBar;
public Bar getBar() { return myBar; }
public void setBar(Bar bar) { myBar = bar; }
...
}
声明您将使用自定义应用程序类使用您的清单。
<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()
我想确保您首先不会无意中重置该变量。为此,您可能需要创建(例如)getMyVariable()
和setMyVariable()
函数,将一些日志记录放入其中并使用它们而不是直接访问该变量。
发布您尝试过的相关代码。 – Lion 2011-12-19 15:55:02
感谢您的答案,但在应用程序中,当应用程序进入后台时,似乎我失去了我的值。 – 2011-12-27 13:09:45