基本上,我試圖用我的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。 –