我创建了一个android应用程序,我使用一个应用程序类来存储和访问全局变量。但是我遇到了一个奇怪的行为,我的应用程序类中的所有变量在以下场景中都未初始化,
- 如果我的应用程序空闲一段时间(说10分钟左右)。
- 如果我的应用程序进入后台(如果浏览器在应用程序上方打开)。
我在SO和web上搜索了很多,没有找到任何合适的答案。一旦应用程序类被初始化,它将在应用程序的生命周期内被访问。我错过什么了吗?
因为我是新的android开发,我可能在这里做错了。有人能给我指个正确的方向吗?提前感谢。
public class MyApp extends Application {
private MyClass classObj = new MyClass();
private boolean flagOne = true;
private boolean flagTwo = false;
void setFlagOne(boolean flag) {
flagOne = flag;
}
boolean getFlagOne() {
return flagOne;
}
void setFlagTwo(boolean flag) {
flagTwo = flag;
}
boolean getFlagTwo() {
return flagTwo;
}
void setMyClassObj(MyClass obj) {
classObj = obj;
}
boolean getMyClassObj() {
return classObj;
}
}
最后,我通过使用共享首选项保存变量状态并将对象存储在应用程序文件目录中来对其进行排序。因此,如果应用程序在任何时候重新创建(有时如果应用程序在后台运行),我将恢复变量的状态并读取对象。因此,变量不会在某个时间点未初始化。
存储值,
SharedPreferences pref = getSharedPreferences("appstate", Context.MODE_PRIVATE);
Editor editor = pref.edit();
editor.putBoolean("flagone", flagOne);
editor.putBoolean("flagtwo", flagTwo);
检索值,SharedPreferences pref = getSharedPreferences("appstate", Context.MODE_PRIVATE);
flagOne = pref.getBoolean("flagone", true);
flagTwo = pref.getBoolean("flagtwo", false);