onRestoreInstanceStateとonSaveInstanceStateを実装しました。アプリが最小化されている場合(ホームボタンを押すか、別のアクティビティがフォアグラウンドにある場合)、どちらも正常に機能します。ただし、アプリを最小化してプロセスを強制終了すると(現在のプロセスのリストを開いてそのプロセスを終了することにより)、アプリは保存されたインスタンスの状態を復元しません。保存した状態を復元するにはどうすればよいですか?シリアライズ可能を使用してsavedInstanceStateバンドルをファイルに書き込み(したがって、RAMではなくハードドライブに何かを保存する)、ファイルからsavedInstanceStateをリロードするのが最善のオプションですか?
2 に答える
保存した状態を復元するにはどうすればよいですか?
できません。これは、保存されたインスタンスの状態の目的ではありません。
シリアライズ可能を使用してsavedInstanceStateバンドルをファイルに書き込み(したがって、RAMではなくハードドライブに何かを保存する)、ファイルからsavedInstanceStateをリロードするのが最善のオプションですか?
「最良のオプション」は、ファイル、データベース、またはなどの永続性ですSharedPreferences
。あなたの特定のアプローチは奇妙に思えます。
保存されたインスタンスの状態は、ユーザーが入力したがまだ送信していないフォームの内容など、一時的な情報のみを対象としています。それを超えるものは、保存されたインスタンスの状態ではなく、ある種の永続的なデータモデルに属します。これは、DOM変数とJavaScript変数にあるデータが永久に存続するのではなく、どこかに(通常はWebサーバーに)保存する必要があるWebアプリの構築と同じです。
答えには遅すぎるかもしれませんが、SavedStateHandle
Android Jetpackから状態を保存できます(プロセスの強制終了後も存続します)。
詳細はこちら: https ://developer.android.com/topic/libraries/architecture/viewmodel-savedstate