2016-07-02 21 views
0

Androidのドキュメントでは、設定の変更によってアクティビティの再作成が強制される可能性があります。最も一般的な変更はローテーションです。現在、アクティビティが再作成されるために破棄されるかどうかを判断できるメソッドがいくつかありますが、これらのメソッドのすべて(?)はonStop()の後に呼び出され、データの保存目的では保証も推奨もされていません。アクティビティはいつ強制的に再作成されますか?

例を挙げておくと、ユーザーが戻るボタン、アプリスイッチ、e.t.cを介してアプリから離れて移動すると、書き込み/更新された内容を自動保存するEditTextアクティビティがあります。ただし、設定が変更されたときに変更を保存したくない場合もありますので、そのような場合に備える必要があります。

+1

あなたは決してユーザーのデータを失うべきではありません。 – ianhanniballake

+0

@ ianhanniballakeの貢献の上に、あなたが存在しないかもしれない事件のために過剰工学をしているように聞こえるでしょう。 – nukeforum

+0

あなたは正確に何を知りたがっていますか?活動状態を保存するか保存しないか? – AADProgramming

答えて

0

構成の変更によりシステムによってアクティビティが破壊されると、onSaveInstanceStateが呼び出されます。

@Override 
protected void onSaveInstanceState(Bundle outState) {    
    super.onSaveInstanceState(outState); 
} 

outStateバンドルに保存するデータを保存します。

次に、onCreateとonRestoreInstanceStateに格納されたデータを受け取ります。

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

以前にonSaveInstanceStateに保存したデータを取得するために使用します。

+0

シナリオ:私は「自動保存」をオンにしていますが、ユーザーは入力を保存したくありません。 onSaveInstanceStateは、onPauseとonStopの間で呼び出されます。そして、データの保存は 'onPause'で起こるはずなので、私は設定変更に対処できる時間までにすでにデータを保存していたでしょうか? – Lobstw

0

デフォルトでは、システムは少数のウィジェット(EditText、TextView)の状態をそれ自身で保存し、この魔法はsuper.onSaveInstanceState()で起こります。だから、

@Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); }

あなただけsuper.onSaveInstanceState()を呼び出す前にeditText.setText("")を行う、のEditTextでテキストを保存したくない場合。

これが役に立ちます。

関連する問題