2012-02-16 14 views
1

アンドロイド用onDestroy()が呼び出された場合、永続状態を試行しています。実際のアプリの機能性が永続性機能から切り離されるように、そのようなことをするために使用される一般的なデザインパターンは何ですか?たとえば、私はforループを持っていて、ゲーム内のすべてのプレイヤーを反復します。このアップデートは、ゲームの各ラウンドの終わりに発生します。アプリが更新の途中で破壊される可能性はありますか?それが起こった場合、更新されたプレイヤーを覚えておくためにどのようなロジックを含める必要がありますか?アンドロイドアプリの永続状態のデザインパターン

+0

フラグメントAPIをご覧ください – slezica

答えて

0

状態を保存する主なオプションは2つあります。インスタンス変数に関心がある場合は、Activity.onSaveInstanceStateをオーバーライドしてください。this questionの答えは、これを行う方法の良い例です。

永続データの場合は、SharedPreferences、SQLiteデータベースに格納するか、ファイルに書き込むことができます。この記事では、開始に役立つはずですhttp://developer.android.com/reference/android/app/Activity.html#SavingPersistentState

0

ユーザーは、電話をかけるなどの別のアプリに切り替えると、更新中にアプリが半減することがあります。

このような場合を考慮すると、onPause()は、アクティビティがシステムによって強制終了されたときに呼び出される最後のメソッドであるため、onDestroy()ではなくonPause()で状態を保持する必要があります。

そして、onPause()では、アップデートを実行するバックグラウンドサービスを開始することができます。バックグラウンドサービスは、アップデートを実行しているときにシステムによって殺される可能性が低いように、プロセスの優先順位を高くすることができます。

Activity lifecycleおよびProcessドキュメントで詳細を参照してください。

0

Androidはアプリを殺すことについて非常に良いことではありません。 onPauseまたはonDestoryを取得しても、取得しなくてもかまいません。あなたは、VMのシャットダウンを受信することができます。基本的に、あなたのアプリはいつでも死ぬことができます(メモリ不足)、ユーザーがそれを殺すなどしても警告は表示されません。基本的には、あなたがいつでも死ぬことができ、取得するとすぐに重要な状態を保存または更新することを前提とすることをお勧めします。

基本的には、私はSQLデータベースを作成するか、または共有プリファレンスを使用します。

関連する問題