2017-03-06 11 views
0

私はSharedPreferencesを使用して、自分のゲームで最高のスコアを保存して読み込みます。私が見つけた問題は、エミュレータを 'X'マークで閉じると、最高のスコアを保存しませんでしたが、最初にアプリケーションをバックグラウンドに置き、それを閉じると(エミュレータ内または 'X 'マーク)は、最高のスコアを保存して読み込みます。最高のスコアを読み込んでいる間にsharedPreferencesに奇妙なことがあります

//save the highscore 
SharedPreferences prefs = this.getContext().getSharedPreferences("BEST", Context.MODE_PRIVATE); 
SharedPreferences.Editor editor = prefs.edit(); 
editor.putInt("key", best); 
editor.commit(); 

//load the highscore 
SharedPreferences prefs = this.getContext().getSharedPreferences("BEST", Context.MODE_PRIVATE); 
best = prefs.getInt("key", 0); 

ノート:ここで私が使用したコードは、私は2つのacutalデバイス(LGオプティマスL2とサムスンギャラクシーA3)でゲームをテストしているし、それらの両方にすべてが正常に動作します。それは私が心配すべきではない何かですか?

EDIT:私は私が直接プロジェクトのフォルダの名前を変更し、ここから、私はいくつかのエラーが発生した後、私は「クリーンプロジェクト」を使用していたことを言及するのを忘れてしまいました。たぶんそれはそれと関係があります。

答えて

0

あなたのスコアが保存されるかどうかは、コードを保存する場所(これは完全にうまく見えます)によって異なります。たとえば、アクティビティのメソッドで保存する場合は、バックグラウンドに置くと適切に保存されます。

ウィンドウを閉じてシャットダウンすると、アプリケーションが非常に激しく終了する可能性があります。その場合、通常のライフサイクルコールバックはアプリケーションで受信されず、ただちに終了します。 SharedPreferencesに保存されるコードは実行されません。実際のデバイスでは、このような即時シャットダウンは、電源ボタンを押したりバッテリーを取り出したりすることで電話機をシャットダウンするのと同等です。これは準備できるものではありません。

TL; DR:これは正常なようですが、私はそれについて心配しません。

+0

明確化のおかげで、今何が起こっているのか理解しています。私はすでに実際のデバイスをシャットダウンしようとしましたが、すべてがOKでした。最高得​​点が保存されました。 :) –

関連する問題