web-dev-qa-db-ja.com

onPauseでのアクティビティ状態の保存

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()メソッドをオーバーライドして同じ変数を保存し、アクティビティが一時停止されなくなったときに元に戻したいのですが、これを行う方法についてのアイデアは大歓迎です

18
Waggoner_Keith

あなたが発見したように、onSaveInstanceStateは、OSによって破棄された後、アクティビティの同じいわゆる「インスタンス」を再作成する必要がある状況でのみ役立ちます。スタックして、メモリの負荷がかかっても存続します。

onPauseにデータを保存することは、アクティビティの1回の実行を超えて持続する永続性を実現する方法です。これを機能させるには、次のようないくつかのオプションがあります。

  • 共有設定
  • ファイル
  • データベース
  • コンテンツプロバイダー

これらの各オプションの詳細については、このドキュメントを読むことをお勧めします。

http://developer.Android.com/guide/topics/data/data-storage.html

36
lyricsboy

変数fooをクラスメンバーmFooonPauseに割り当てるだけで、mFooonSaveInstanceStateの状態バンドルに保存できます。同じことが復元シナリオにも当てはまります。

4
Hamid Fadishei

アクティビティの状態を共有設定に保存する場合、@ GNStateアノテーションが付けられたアクティビティの必須フィールドを簡単に保存および取得できるように、私が作成したライブラリのGNStateManagerコンポーネントをチェックアウトできます。使い方はとても簡単です。他のシングルトンクラスオブジェクトの状態も保存できます。設定と使用方法については、こちらを参照してください: https://github.com/noxiouswinter/gnlib_Android/wiki/gnstatemanager

0
jinais