0

ゲームボードアクティビティのonPause()関数にゲームステータスを保存するゲームアプリがあります。

ユーザーが一時的に別のアプリに切り替えて後でプレイに戻る可能性があるため、これは非常に無駄に思えます。ただし、戻ってこない場合は、ガベージコレクションが行われ、ステータスが失われる可能性があるため、念のために保存します。

ステータスは、読み取られるたびに何度も保存されると思います。彼らがアプリを離れることを知っているときにステータスを怠惰に保存するためのより良い方法はありますか?

誰かが私が使用できる保証されたコールバックを知っていますか?たとえば、保存ステータスコードをonDestroy()に移動すると、呼び出されない場合があります。

onSaveInstanceState()を活用して支援する方法はありますか?

ありがとう

4

1 に答える 1

1

onPause()は、ユーザーが向きを切り替えたとき、およびユーザーが離れたときに呼び出されます。これらのアクションは両方ともデータが失われる可能性があるため、作成しているもの(ゲームであれアプリであれ)に関係なく、onPause()に保存することをお勧めします。

したがって、onPause()は、データの永続性を確保するための最も安全な方法です。

編集 2番目の質問に答えるために、onSavedInstanceState()は明確ではありません

呼び出された場合、このメソッドはonStop()の前に発生します。onPause()の前または後に発生するかどうかについての保証はありません。 http://developer.android.com/reference/android/app/Activity.html#onSaveInstanceState(android.os.Bundle

したがって、ゲームの場合、プレーヤーのデータを積極的に保存し、onPause()で保存します。他のすべては失敗する可能性があるか、アクティビティのライフサイクルに直接関係していません。

于 2012-11-26T02:47:19.053 に答える