基本上,我试图用我的Android应用程序保存和加载数据。按下主页按钮时,它会按预期工作,然后重新进入应用程序。即使通过应用程序管理器第一次关闭应用程序,它会正确加载正确的数据(目前只有一个整数用于测试目的)。第二次通过应用程序管理器关闭应用程序时,即使数据使用与第一次相同的方法死亡,数据也会丢失。查找下面的代码处理任何保存,加载和相关的方法。Android:试图保存数据,但它在第二次onDestroy丢失()
Android的生命周期方法:
public int setting1 = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_layout);
loadData();
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
AdView mAdView = (AdView) findViewById(R.id.adView);
AdRequest adRequest = new AdRequest.Builder().build();
mAdView.loadAd(adRequest);
}
@Override
public void onPause() {
super.onPause();
saveData();
}
@Override
public void onStop() {
super.onStop();
saveData();
}
@Override
public void onDestroy() {
super.onDestroy();
saveData();
}
@Override
public void onResume() {
super.onResume();
loadData();
updateUnlockables(setting1);
}
Save和Load方法:
public void saveData(){
String filename = "icesSave.asv";
FileOutputStream fos;
try {
fos = openFileOutput(filename, Context.MODE_PRIVATE);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeInt(setting1);
oos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public void loadData(){
String filename = "icesSave.asv";
FileInputStream fis;
try{
fis = openFileInput(filename);
} catch (FileNotFoundException ex){
return;
}
try {
ObjectInputStream ois = new ObjectInputStream(fis);
setting1 = ois.readInt();
ois.close();
} catch (Exception e) {
e.printStackTrace();
}
}
尝试写saveData();在线超级之前。所有onPause,onDestroy和onStop。 –