このメソッドの「outState」にデータを保存しています:
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("my_int", mValue);
}
これは、アクティビティが再開されたときに、onCreate()
メソッドで次のことができることを意味します。
if (null != savedInstanceState) {
savedInstanceState.getInt("my_int");
}
ただし、これにより、画面がオフになった後に問題が発生します。画面がオフになると、アクティビティは強制終了されます。これは onSaveInstanceState()
、画面オフ期間中にローテーションが発生した場合は が呼び出されずsavedInstancestate
、アクティビティが完全に再開されたため が null であることを意味します。その結果、デバイスがローテーションされたにもかかわらず、値が保存および復元されませんでした。
どうすればこれを回避できますか?