私はAndroidゲームのすべてのデータをsavedInstanceStateバンドルに収めることに尽力しました。多くのParcelableオブジェクトを含む多くのデータがあります。これにより、アプリが一時停止されたり、向きが変わったりすると、アクティビティが再作成されてもデータが失われることはありません。バンドルをSharedPreferencesに保存する
しかし、私は最近、savedInstanceStateバンドルが長期保存には適していないことを発見しました。だから私は、ゲームの状態を常に元に戻すことができるように、私は自分の既存のsaveメソッドを長期的な解決策として適応させる方法を模索しています。
私は2つのソリューションこれまでの聞いたことがある:
1)向きの変更のためのsavedInstanceStateバンドルを使用するだけでなく、アプリが完全にシャットダウンする必要があるときのためにSharedPrefsを組み込みます。
これは、基本的に同じことを行うために2つの異なる完全な方法を使用するため、これは非常に非生産的です。また、私のsavedInstanceState BundleはParcelableオブジェクトを使用しているので、これらのオブジェクトのそれぞれにSharedPrefsに書き込むための別のメソッドを与える必要があります。本質的に、重複していて管理が難しいコードがたくさんあります。
2)savedInstanceStateバンドルをシリアル化し、ファイルに直接書き込みます。
私はこれには開放されていますが、実際にそれをやり遂げる方法はわかりません。しかし、私はAndroidのシリアル化が「喜んで/不可能に遅い」と聞いたので、よりよい解決策があることを願っています。
誰かが私にこの問題に対する解決策を提供できるのであれば、非常に感謝します。
シリアライゼーションクラスを探してシリアライズするだけでは、それを見つけるのは難しくありません。 – mango
私が見つけることができる唯一の情報は、シリアライズ可能を実装する必要があることを唯一の情報が示していますが、バンドルはこのインターフェイスを実装していません。 – Dan
私はライブラリhttps://github.com/iamironz/binaryprefsを推奨しています。これにより、実装を通じて標準Javaのようなデータを保存できます。永続的なインターフェイス(jdkの外部化可能インターフェイス) –