OnSaveInstanceStateを使用して正常に保存および復元した変数があります
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState); // the UI component values are saved here.
outState.putDouble("VALUE", liter);
Toast.makeText(this, "Activity state saved", Toast.LENGTH_LONG).show();
}
しかし、これはアクティビティが破棄された場合にのみ機能します。 onPause()メソッドをオーバーライドして同じ変数を保存し、アクティビティが一時停止されなくなったときに元に戻したいのですが、これを行う方法についてのアイデアは大歓迎です
あなたが発見したように、onSaveInstanceState
は、OSによって破棄された後、アクティビティの同じいわゆる「インスタンス」を再作成する必要がある状況でのみ役立ちます。スタックして、メモリの負荷がかかっても存続します。
onPause
にデータを保存することは、アクティビティの1回の実行を超えて持続する永続性を実現する方法です。これを機能させるには、次のようないくつかのオプションがあります。
これらの各オプションの詳細については、このドキュメントを読むことをお勧めします。
http://developer.Android.com/guide/topics/data/data-storage.html
変数foo
をクラスメンバーmFoo
にonPause
に割り当てるだけで、mFoo
もonSaveInstanceState
の状態バンドルに保存できます。同じことが復元シナリオにも当てはまります。
アクティビティの状態を共有設定に保存する場合、@ GNStateアノテーションが付けられたアクティビティの必須フィールドを簡単に保存および取得できるように、私が作成したライブラリのGNStateManagerコンポーネントをチェックアウトできます。使い方はとても簡単です。他のシングルトンクラスオブジェクトの状態も保存できます。設定と使用方法については、こちらを参照してください: https://github.com/noxiouswinter/gnlib_Android/wiki/gnstatemanager