我正面临一个关于我正在我的项目中使用的静态变量的问题(它包含文件中的一些字段)。在某些情况下,变量会失去她的价值,而不是总是如此。 我已经读过静态变量的生命周期,她在3种情况下失去了价值:
1)卸载班级。
2)JVM关闭。
3)过程终止。
所以我有一个问题:还不足以重写onResume上的活动并再次解析文件并再次提供静态变量吗?
答案 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()
函数,将一些日志记录到它们中并使用它们而不是直接访问变量。