2016-05-28 8 views
0

私は現在、ビデオゲーム(ポケモン特有のもの)のリファレンスとなるAndroidアプリを開発しています。すべてのデータを静的なクラスに保存することに本質的に間違っているものがあるのでしょうか?このデータセットは、新しいゲームが出てくるとき以外は固定されているため、更新はあまり必要ありません。また、できるだけ負荷時間を最小限に抑えたいので、データをサーバーに保存することを本当に望んでいません。多くのデータを静的クラスとして保存するのは効率的ではありませんか?

+0

アプリケーションと一緒に配布された.propertiesファイルはありますか? – EJP

+0

Android固有のストレージメカニズム(SharedPreferencesなど)を調べてください。 – chRyNaN

+0

データに依存しますが、SQLiteはおそらく必要なものです –

答えて

4

はい、これは重要であるかどうかは、話しているデータの量によって異なりますが、非効率的です。

非効率性は、以下に起因する:

  • staticの変数の初期化子へのデータは、そのデータのすべてがクラスロード時に(例えば、文字列プールに)ロードする必要がありますハードワイヤーた場合アプリケーションの存続期間中、そこにとどまる必要があります。いいえ機会は(まだ)必要なものだけを保持する。

  • 第2の問題は、クラスの静的初期化メソッドでは、軽微な量のコードがある可能性があることです。実際には全体の効率に影響を与える必要はありません「もの」のための

長期メモリ使用量。 GCには、スキャンする対象が多く、見た目が増えています。また、GCサイクル後には空き容量が少なくなるため、より頻繁に実行する必要があります。


あなたのコードで自分のデータを埋め込むことは柔軟性に欠けることがしやすくなるという問題もあります。データを変更する唯一の方法は、再構築/再デプロイです。それは開発者の時間の面で非効率的なことがあります。

さまざまな方法があります。 e.h。プロパティファイル、環境設定、軽量データベース。これらのうちのいくつかは、それほど良くないとは限りませんが、ロード時のパフォーマンスを提供します。例えばレイジーローディングによって。それらのすべてが、ロードされたデータが必要ない場合は破棄され、その後リロードされる可能性があります。


1 - あなたは静的変数にnullを割り当てることがあったとしても、まだ可能性の高いクラス自体に関連付けられた文字列プール内のオブジェクトへの暗黙の参照が存在することになります。

関連する問題