基本的に、Androidアプリでデータを保存して読み込もうとしています。これは、ホームボタンを押してアプリを再入力するときに意図したとおりに動作します。アプリマネージャーで初めてアプリを終了しても、正しいデータ(テスト目的のために現時点では1つの整数)で正常に読み込まれます。アプリがアプリケーションマネージャーで2回目に閉じられると、データは最初と同じ方法で強制終了されても失われます。保存、読み込み、および関連する方法を扱うコードを以下に示します。Android:データを保存しようとしましたが、2回目の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);
}
保存と読み込み方法:
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のうちのどれか。 –