オンポースでアクティビティ状態を保存します
質問
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
確かに、あなたの活動の単一の実行を超えて続く永続性のために行く方法です。これを機能させるには、次のようないくつかのオプションがあります。
- 共有設定
- ファイル
- データベース
- コンテンツプロバイダー
これらの各オプションの詳細については、このドキュメントを読むことをお勧めします。
http://developer.android.com/guide/topics/data/data-storage.html
他のヒント
変数を単純に割り当てることができます foo
クラスメンバーに mFoo
の onPause
あなたも保存した場合 mFoo
州のバンドルで onSaveInstanceState
. 。復元シナリオにも同じことが言えます。
アクティビティ状態を共有設定に保存することを選択した場合、私が書いたライブラリのGNSTatateManagerコンポーネントをチェックして、アクティビティの必要なフィールドを簡単に保存して取得できるようにしました。使いやすいです。他のSingletonクラスのオブジェクト状態も保存できます。セットアップと使用情報についてはこちらをご覧ください。 https://github.com/noxiouswinter/gnlib_android/wiki/gnstatemanager