私のAndroidゲームは、レベルのレイアウトデータを配列リストに保持しています。レベルローダーをテストしているときに、レベルの読み込みに失敗して画面が真っ暗になることがあることに気付きました。最初は、テクスチャが再ロードされていない可能性があると思いましたが、ArrayListとは別のオブジェクトを描画することでこれが間違っていることを証明し、問題なく描画されました。次に、Logタグを使用してArrayListのサイズを確認しました。ホームを押してからアプリケーションを再度開くとすぐに、Logタグがゼロのサイズを返し始めました。これはすべてのデータが失われたことを意味します。onPauseが呼び出されるたびにファイルからレベルデータをロードしたくないので、ArrayListに保持されているデータを保持する方法はありますか?
質問する
758 次
1 に答える
1
問題は、おそらくガベージコレクションが発生していることです(つまり、一時停止していると、メモリの問題のために破棄されます)。アクティビティにonSaveIntstanceStateメソッドとonRestoreInstanceStateメソッドを実装して、問題が解決するかどうかを確認します。
Num1は、指摘する価値があると私が感じるコメントで良い点を述べました。バンドルには少量のデータが含まれている必要があることに注意してください。ArrayListが大きい場合は、おそらくアクティビティが同じ場所にガベージコレクションを取得している理由です。その場合は、2つのオプションのいずれかがあります。onDestroyメソッドで自分自身のデータをディスクに明示的に保存するか(この方法では、本当に必要な場合にのみデータを保存します。ディスクへの書き込みには時間がかかる場合があります)、またはアクティビティに焦点が戻ったときにデータを再計算します。これは考えておくとよいことです。
于 2011-10-22T19:47:42.517 に答える