自動的に永続化されなかったウィジェットの状態。アクティビティが破棄されると、状態に関するすべての情報が失われます。共有設定を使用してアプリケーションの状態を保存することをお勧めします。これはグーグル開発者サイトからの例です。キーと値のペアを保存することでアプリケーションの状態を保存でき、アプリには十分なはずです。
アクティビティが停止したときに、テキストとスピナーアイテムの位置を共有設定に保存しonStop()
、の状態を復元しonCreate()
ます。
public class Calc extends Activity {
public static final String PREFS_NAME = "MyPrefsFile";
@Override
protected void onCreate(Bundle state){
super.onCreate(state);
. . .
// Restore preferences
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
boolean silent = settings.getBoolean("silentMode", false);
setSilent(silent);
}
@Override
protected void onStop(){
super.onStop();
// We need an Editor object to make preference changes.
// All objects are from android.context.Context
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean("silentMode", mSilentMode);
// Commit the edits!
editor.commit();
}
}
アプリケーションの状態をメソッドごとに保存することもできますがonSaveInstanceState(Bundle)
、通常は、onPause()
またはonStop()
メソッドで保存するのがより良い方法です(データは確実に保存されます)。ドキュメントによると:
永続データはonSaveInstanceState(Bundle)ではなくonPause()に保存することが重要です。後者はライフサイクルコールバックの一部ではないため、ドキュメントで説明されているように、すべての状況で呼び出されるわけではありません。