2012-02-08 17 views
3

私が開発しているゲームで「再開」機能を実装しようとしています。アンドロイドはonPauseまたはonDestroyにゲームの状態を保存しますか?

  • ユーザーがゲームを開始し、後でゲームを終了して終了すると、ゲームの状態が保存されます。アプリをもう一度開くと、「再開」オプションが利用可能になります。

  • アクティビティが一時停止している(通話のために最小化されている)場合、ユーザーが戻ると、進行中のゲームが表示されます。もちろん、OSが活動を停止することを決定しない限り、状態を終了して保存するべきではありません。

私はSharedPreferencesを大部分は使用することにしました。追加情報を保存するカスタムファイルも使用することに決めました。私は多くの人々がonPause()メソッドでプログラムの状態を保存することをお勧めしているのを見てきました。なぜこれが当てはまるのでしょうか?

私が集めることができるから、OnDestroy()を使うと良いでしょう。 onPause()は、アクティビティが強制終了されることを意味しないので、ゲームの状態を必然的に保存するときに時間を無駄にする可能性があります。私は自分のプログラムをチェックして、onDestroy()が適切な時に呼び出されています。私はそれゆえ、活動が破壊されるのを防ぎながら漏れがないと仮定しています。

これにもかかわらず、onDestroy()に状態を保存すると推薦する場所が見つからず、誰もがを使用することをおすすめしているようです。ここに情報がないのですか?

答えて

5

これにもかかわらず、私はonDestroy()に状態を保存することを推奨していません。誰もがonPauseの使用をお勧めします。ここに情報がないのですか?

あなたは:)です。 onDestroy()の呼び出しは保証されていません。

注:データを保存する場所としてこのメ​​ソッドを呼び出してはなりません。たとえば、アクティビティがコンテンツプロバイダのデータを編集している場合、これらの編集はここではなく、onPause()またはonSaveInstanceState(Bundle)でコミットする必要があります。このメソッドは通常、アクティビティに関連付けられたスレッドのようなリソースを解放するために実装されているため、破棄されたアクティビティはアプリケーションの残りの部分が実行されている間はそのようなことを回避しません。 システムでは、このメソッド(または他のもの)を呼び出すことなくアクティビティのホストプロセスを単に終了させる状況があるため、プロセスが終了した後に残っていることを行うために使用しないでください。

+0

ブライアンありがとうございます。私はドキュメントをチェックしていないために愚かな気がする!それはonPause()のように見える:) –

+0

心配、幸運。 –

関連する問題