2011-11-09 8 views
1

WebサービスからのJSON応答に大きく依存するアプリケーションがあります。アプリのすべての部分には、これらの応答から構築されたオブジェクトが含まれているため、このデータはアプリが正しく動作する上で非常に重要です。いくつかのクラスのデータを中央オブジェクトに格納します

現在、アプリの機能(ニュース、音楽、写真など)がユーザーによって開かれるたびに、Webサービスが照会され、目的のデータで応答します。このデータは解析され、ユーザーが選択したものを表示するために使用されます。 問題は、このプロセスは帯​​域幅が非常に不公平であることです。特に接続が遅い電話の場合、表示される画像をダウンロードするのではなく、データの読み込みと解析に数秒かかる場合があります。 ユーザーが関数を閉じてから再度開くと、すべてのデータが再ダウンロードされ、再解析されます。

したがって、最も一般的に使用されるデータをセントラルクラス/オブジェクトに保存します。ユーザーがアプリを使用している間はこのデータは変更されない可能性があるため、ユーザーが直前に閉じた機能を再開する場合は、必要なデータをどこかに保存する必要があります。

しかし、どうすればいいですか?私はSingletonsについて読みましたが、20以上の異なるクラスからSingletonオブジェクトにどのようにデータを追加するのですか?また、このデータを取得して、ユーザーが関数を再オープンしたときに新しいインテントに追加するにはどうすればよいでしょうか(これはまったく可能です)

+0

利用のSQLite(デシベル)とのContentProvider:時限broadacastsのための放送受信機

は、私は自分のデータバインディングJSONデータストレージ用のライブラリを使用し、通常のhigscoreのsynchtronisationを実行する - それ) が必要例:http://esilo.pl/selvin/LooserSample.zip開始時に同期するか、またはメインアクティビティでメニュー - >同期を使用して強制的に同期する場合 – Selvin

答えて

2

提案はありますが必ずしも最良の方法ではありません私はあなたの質問を正しく解釈しました。

sql lite dbまたは多分sdカードにそのいずれかを保存できますか?

音楽と画像については、アイテムをDBのSDカードに保存することができます。

次に、アプリケーションが読み込まれるたびに、または「データが変更されました」というリンクを呼び出すたびに、データが変更されるたびにdbを更新しますか?

+0

申し訳ありませんが、現在の状況をより明確にする必要がありますが、問題の1つを示します。 今、このアプリには、特定のバンドのアルバムのリストを表示するオプションが含まれています。これらのアルバムにはすべて、アルバムのカバー、タイトル、アルバムに関する情報などがあります。このデータはすべてユーザーがバンドを選択するたびにロードされます。このデータをすべて保存すると問題はありませんが、ユーザーはチェックアウトするバンドを変更できます。つまり、データベースにすべてのデータを保存すると、このデータベースは非常に急速に伸びていく可能性があります。 –

+0

とにかくストリーミングされるので、音楽自体は保存する必要はありません(さらに、4MBのMP3ファイルを数十より大きなものは少し面倒かもしれません)。 できるだけバンドの写真を保存したいのですが。それをSDカード/データベースに保存することは可能でしょうか?あなたが言ったように、データが変更されたかどうかをアプリがロードしている間にチェックしますか? –

+0

sqliteはちょうど1つのオプションを格納するためのビットオーバーキルかもしれませんが、うまくいくでしょう。 Sqlliteは、アプリケーションが閉じられても保存します。そのため、次回ユーザーが開いたときにそのアプリケーションが保持されます。私はあなたがそのバンドとバージョンnumのためのユニークなリファレンスを持っていたと仮定してdatが変更されているかどうかのtrue/falseのWebサイトを呼び出します。 その後、ユーザーが別のバンドを選択すると、保存されたすべてのデータが削除され、新しいものが追加されます。 – Bex

0

ハイスコアのゲームでも同様の問題に直面しています。ハイスコアのリストは大きく、HTTP GetリクエストからJSONとなります。 - ローカルJSONコピーのキャッシュを担当し、HTTPなどからの取得を処理するシングルトンハイスコアサービスです。loadfingは時間の経過とともに非同期処理を実行し、新しいハイスコアが利用可能になったときにブロードキャストを開始しますここにある...

https://github.com/ko5tik/jsonserializer

関連する問題