Activityの再構築


Activityステータスの保存


09-15 11:09:56.002 5292-5292/com.example.li.restartactivity D/test: onsaveInstanceStateweds 09-15 11:09:56.002 5292-5292/com.example.li.restartactivity D/test: stop
私たちのactivityがStopを開始する前に、onSaveInstanceState()が呼び出されます.
Activityは,キー値ペアの集合で状態情報を保存することができる.この方法では、EditTextコンポーネントのテキストやListViewのスライド位置など、Activityビューのステータス情報がデフォルトで保存されます.
Activityに追加のステータス情報を保存するには、onSaveInstanceState()を実装し、Bundleオブジェクトにkey-value pairsを追加する必要があります.たとえば、次のようにします.
static final String STATE_SCORE = "playerScore";
static final String STATE_LEVEL = "playerLevel";
...

@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
    // Save the user's current game state
    savedInstanceState.putInt(STATE_SCORE, mCurrentScore);
    savedInstanceState.putInt(STATE_LEVEL, mCurrentLevel);

    // Always call the superclass so it can save the view hierarchy state
    super.onSaveInstanceState(savedInstanceState);
}

Caution:ビューステータスの情報を保存するには、onSaveInstanceState()メソッドの親インプリメンテーションを呼び出す必要があります.
---------------------------------------》
anticvityを復元する2つの方法
1,
onCreate()メソッドは、新しいActivityインスタンスが最初に作成され、再作成される前にDestoryされたインスタンスが呼び出されるため、Bundleオブジェクトを読み込む前にnullであるかどうかを検出する必要があります.nullの場合、システムはリカバリ前にDestoryのActivityではなく、新しいActivityインスタンスを作成します.
次の例では、onCreateメソッドでデータを復元する方法を示します.
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState); // Always call the superclass first

    // Check whether we're recreating a previously destroyed instance
    if (savedInstanceState != null) {
        // Restore value of members from saved state
        mCurrentScore = savedInstanceState.getInt(STATE_SCORE);
        mCurrentLevel = savedInstanceState.getInt(STATE_LEVEL);
    } else {
        // Probably initialize members with default values for a new instance
    }
    ...
}
2,onRestoreInstanceState()  onStart()  .   onRestoreInstanceState() ,  Bundle  null。
public void onRestoreInstanceState(Bundle savedInstanceState) {
    // Always call the superclass so it can restore the view hierarchy
    super.onRestoreInstanceState(savedInstanceState);

    // Restore state members from saved instance
    mCurrentScore = savedInstanceState.getInt(STATE_SCORE);
    mCurrentLevel = savedInstanceState.getInt(STATE_LEVEL);
}

Caution:上記と同様に、onRestoreInstanceState()メソッドの親インプリメンテーションを呼び出す必要があります.これにより、デフォルトの親インプリメンテーションがビューステータスの情報を保存できます.
/*@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {


    String text = savedInstanceState.getCharSequence(STORE).toString();
    editText.setText(text);// editeText Activty view 
    // view 
    editeText=(EditeText)findViewById(R.layout.text);
    editText.setText(Text);

    super.onRestoreInstanceState(savedInstanceState);

}*/