Save Instance Stateを使用してAndroid Activity Stateを保存するにはどうすればよいですか?

アクティビティUIの状態を保存して復元することは、ユーザーエクスペリエンスの重要な部分です。 このような場合、クライアントはUIの状態が以前と同じように継続することを期待しますが、フレームワークはアクションとその中に存在する状態を テスト中に、画面の回転がクライアントから収集されたすべての情報をリセットすることを見たことがあります。 ユーザーが誤って戻るボタンを押した場合も同様です。 画面の回転は、Androidの多数のライフサイクルの変更の一つであり、アクティビティを破壊してリセットし、すべての情報が失われる可能性があります。 間違いなく特別なユーザー体験ではありません!

UIの状態を保存して復元するために、この目的のために最も一般的な二つの方法をオーバーライドします:

Alt Text

onSaveInstanceState():

UIの状態を保存するために、onSaveInstanceState(Bundle savedInstanceState)をオーバーライドし、UIのすべてのデータをsavedInstanceStateバンドルに保存します。

このメソッドは、古いバージョンのAndroid(android8.0まで)ではonStop()の前に呼び出され、新しいバージョンではonStop()の後に呼び出すことができます。

@Override
public void onSaveInstanceState(Bundle savedInstanceState){
super.onSaveInstanceState(savedInstanceState);
//UI状態の変更をsavedInstanceStateに保存します。
//プロセスが
//強制終了されて再起動された場合、このバンドルはonCreateに渡されます。
putBoolean(“StringKeyForBoolean”,false);
savedInstanceState.Putdouble(“StringKeyForDouble”,3.4);
savedInstanceState.putInt(“StringKeyForInteger”,5);
savedInstanceState.Putstring(“StringKey”,”Folio3/blog”);
//など。
}

バンドルは本質的にNVP(”名前と値のペア”)マップを格納する方法であり、onRestoreInstanceState()に渡され、次のような値を抽出します:

Alt Text

このメソッドはonStart()の後に呼び出されます。

@Override
public void onRestoreInstanceState(Bundle savedInstanceState){
super.onSaveInstanceState(savedInstanceState);
//savedInstanceStateを使用してUI状態を復元します。

Var1=savedInstanceState.getBoolean(“StringKeyForBoolean”,false);
Var2=savedInstanceState.getDouble(“StringKeyForDouble”);
Var3=savedInstanceState.getInt(“StringKeyForInteger”);
Var4=savedInstanceState.getString(“StringKey”);

}

この方法を使用すると、画面の回転時や現在のアクティビティがバックグラウンドに移動したときに失われる可能性のあるすべての状態やその他のデータ変数を保存することができます。 UIの状態を保存して復元することは、androidアプリ開発では良い方法です。
: アクティビティが初めて作成されると、インスタンス状態の保存バンドルにデータはありません。

アプリの起動を計画している場合は、このガイドをチェックしてください。



+