0

このメソッドの「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 であることを意味します。その結果、デバイスがローテーションされたにもかかわらず、値が保存および復元されませんでした。

どうすればこれを回避できますか?

4

1 に答える 1

0

あなたがチェックしなければならないいくつかのこと

  1. 画面がロックされているかオフの状態にある場合、アプリケーションは回転することさえないため、何も呼び出されません。

  2. アプリがバックグラウンドになっているときに、アプリ内のどこでも Finish を呼び出さないことを確認してください。

  3. また、アプリをバックグラウンドにしておくとアプリがクラッシュしていないか確認してください。

アプリの実行中にホームボタンを押し、最近のアプリ画面を使用して前面に表示します。onCreate()が再度呼び出しているかどうかを確認します。そうでない場合は、アプリがバックグラウンドに移行したときにクラッシュまたは終了しています。

Sony Xperia Z、Samsung Galaxy s3、Nexus 4(コメントで述べたように)など、ほぼ10種類のさまざまなデバイスでテストしましたが、正常に動作しています。

于 2014-01-20T10:29:08.737 に答える