2016-07-20 4 views
0

アプリケーション状態をsavedInstanceStateとして保存して復元しようとしています。onRestoreInstanceStateは、戻るボタンが押されても呼び出されていません

@Override 
public void onSaveInstanceState(Bundle savedInstanceState) { 
    savedInstanceState.putInt(STATE_Tracker, 1); 
    super.onSaveInstanceState(savedInstanceState); 
} 

@Override 
public void onRestoreInstanceState(Bundle savedInstanceState) { 
    super.onRestoreInstanceState(savedInstanceState); 

    int value = savedInstanceState.getInt(STATE_Tracker); 

    if (value==1){ 

    } 
    else { 

    } 
} 

このコードはホームボタンが押されたときに機能します。しかし、私が戻るボタンを押して、アプリをもう一度実行すると、それは動作しません。

助けが必要ですか?開発者ガイドから

答えて

1

ユーザーが戻るを押すか、活動自体を終了しているため、あなたの活動が破壊された場合の動作は活動がもはや必要であることを示していないので、そのアクティビティインスタンスのシステムの概念が永遠に失われます。しかし、システムが(通常のアプリケーションの動作ではなく)システムの制約のためにアクティビティを破壊した場合、実際のActivityインスタンスはなくなりますが、システムは、ユーザがそれに戻るとシステムが新しいアクティビティのインスタンスを、そのアクティビティが破棄されたときの状態を表すセーブされたデータのセットを使用して更新します。以前の状態を復元するためにシステムが使用する保存されたデータは、「インスタンス状態」と呼ばれ、Bundleオブジェクトに格納されたキーと値のペアの集合です。言い換えれば

あなたが戻ってボタンを押すと、あなたは、このようにあなたは、インスタンスの状態を復元する必要はありません、アクティビティのライフサイクルが終了とみなされ、もはや必要とされている動作に戻すなかったことはありません。 あなたは

@Override 
public void onBackPressed() { 
    super.onBackPressed(); 
} 

をオーバーライドして、SharedPreferenceのような任意のストレージオプションの状態を持続可能性が必要な場合。

関連する問題