2016-07-16 5 views
0

私は実行するたびにシャッフルするクイズアプリを持っています。私のユーザーはスコア、レベル、ライフポイントなどの他のプリミティブと同じオーダーリストを使ってクイズを再開できるように、ゲームの状態をローカルに保存する最もエレガントな方法は何ですか?巨大なarraylist、インデックス、その他のプリミティブを保存する

私はすでにゲームが一時停止しているときにこの状態を保存するバンドルを持っている。私の活動が破壊されたときの状態はどうすれば保持できますか?

私は共有設定を知っていますが、もっとエレガントなものが必要ですか?

+0

https://developer.android.com/training/basics/data-storage/databases.html – johnrao07

答えて

0

は、私たちはいくつかの可能性が(アプリケーションを再入力して、データを復元するために可能性を)あなたのアプリケーションにデータを保存することがあることをまず理解する必要があると思う:

1)それは、高速(ディスクに保存しています 2)リモートディスクに保存してください(遅くなりますが、アプリケーションの削除と再インストールの間にゲームの進行が維持されます)。

まず、この可能性の1つを選択する必要があります。共有設定による - - に保存して :私はそれを実装するには、いくつかのバリエーションがある第一の可能性に

($$いくつかの追加のリモート・ストレージ・コストのほかに)お使いの場合には、ディスク上でローカルの変更を維持するのに十分になると思います - ファイルを保存する(外部ストレージ) - データベースにデータを保存することによって

あなたはゲームの状態を保存したいので、最後の変種はあなたのためではないと思います。 ゲームの状態がアプリケーションのプライベートデータであるため、 '外部ストレージ'の変形もあなたのためのものではありません。

共有設定と内部ストーレッジのどちらかを選択する必要があります。 このジレンマでは、もっと好きなものについて考えることができます。私の場合、共有の設定はデータを保存するための便利で非同期な方法を提供します。しかし、保持したいデータの数について考える必要があります。

大きくない場合は、共有設定を選択します。また、SharedPreferencesで保存する方法(コードを少なく書いて読みやすくする)を手助けする場合は、GsonまたはJacksonのライブラリをインポートすることができます。ゲームのための特別なGameStateクラスを選んでjsonの文字列に変換して保存してください。復元時と同じです。 prefsから文字列を取り出し、それをGameStateに解析します。それで全部です。

希望します。 :)

関連する問題