0

私がやっているのは単純なゲームで、殴られると新しいアクティビティに移動し、そこで AsyncTask を開始してユーザー スコアをサーバーに送信し、サーバーはスコアの配列で応答します (私よりも優れているものはほとんどなく、私よりも悪いものはほとんどありません)。 .

私がしたいのは、この配列を永続化することですが、この画面に対してのみ、特定の画面データが忘れられるというユーザーが存在します。ゲームは常に横向きなので、画面の回転について心配する必要はありませんが、ユーザーはアプリから飛び出すことができ、戻ってきてアプリケーションが強制終了されていない場合は、その画面に再開する必要がありますが、データは失われています (そして非同期タスクが再び開始されます)、そのデータを何らかの方法で永続化する必要があると考えましたが、最初にデータを削除することを心配する必要があるため、データベースへの書き込みは多すぎるように思われました。

このような状況でデータを永続化するには、どのような手法を使用するのでしょうか? Application オブジェクトのメンバ変数として? 一時テーブル?保存されたインスタンス(arraylistをsavedInstanceStateに入れるのは面倒ですが)

ありがとう!

4

2 に答える 2

1

を使用することをお勧めしonSaveInstanceStateます。これは、そのような場合のために設計されています。

実際、それは苦痛ではありません。でputParcelableArrayListを使用し、後でgetParcelableArrayListを使用しonCreateます。

Stringデータ クラスが(名前) とint(スコア) を保持するのと同じくらい単純でParcelableある場合、それを以前に実装したことがなければ、作成は良い練習になります。

于 2013-05-11T07:58:39.070 に答える
0

いくつかの点で、あなたの質問は明確ではありません。

私がしたいのは、この配列を永続化することですが、この画面に対してのみ、特定の画面データが忘れられるというユーザーが存在します。

この行では、アクティビティが実行されているとき (フォアグラウンドまたはバックグラウンド) にのみデータを保持しているようです。したがって、その場合、データをクラス変数以外の場所に保存する必要はありません。したがって、これが必要な場合は、onResume で asynctask を呼び出している可能性があります。SO その場合、onCreate で asynctask を呼び出します。

ただし、アプリケーションを閉じた後でもデータを保持したい場合は、SharedPreferences を使用して配列を保存できます。

コードを投稿できれば、問題をより簡単に知ることができます。

于 2013-05-11T03:47:41.200 に答える