0

私はAndroidアプリケーションを開発しており、情報を求めてサーバーに多くのRESTfulリクエストを行っています。常にこれらのリクエストを行う必要がありますか、それともデバイスのSQLiteデータベースにその一部を保存する必要がありますか?保存する必要がある場合、保存するデータの量(すべてではないにしても)をどのように決定しますか?

このアプリは教育的なソーシャルネットワークのようなものなので、次のようなオブジェクトがあります。

  • ユーザー
  • 学校
  • ノート
  • コース
    • コメントコメント
    • 質問

現在、データベースに情報を保存して更新を頻繁にチェックする予定ですか、それとも常にサーバーにデータを要求する必要がありますか?さらに、ネストされたデータを1つのリクエストにプルする必要がありますか、それとも複数のRESTfulリクエストに分割する必要がありますか?

4

2 に答える 2

1

すべての(関連する)データをローカルに保存することは1つのオプションですが、それは時々非常に大きくなる可能性があり、アプリケーションが急成長すると、必要なスペースも急増します。代わりに、関連データの最新のコピーをローカルに保持し、オンラインの場合はアプリがダウンロードできる更新をブロードキャストすることもできます。

アプリが一種のソーシャルネットワークであることを考えると、最新のアップデートが利用可能になり次第、ユーザーに届くようにする必要があります。ローカルに保存し、間隔を置いて非同期タスクを起動するということは、更新の遅延を修正することを意味します(これは、非同期タスクの実行とタスクの実行時間の間の遅延に等しくなります)。さらに、多くの場合、更新がなかった可能性があり、サーバーに無意味にクエリを実行することになります。

これは、サーバーが提供されているデバイスのリスト(アプリのインストール時に登録できます)を保存し、ブロードキャストできる特定のデバイスのセットに関連する更新があるたびに、「ブロードキャスト更新」アプローチと戦うことができます。 'emへの更新。(このアプローチの開始には、Google Cloud Messagingを試してください。)

于 2012-11-25T05:19:28.453 に答える
1

最善の解決策は、ローカルにあるすべてのデータを保存し、場合によっては起動しAsyncTaskたりAsyncLoader、更新をダウンロードしたりすることです。これにより、ユーザーはオフライン時にアプリケーションを使用できるようになり、アプリケーションの起動時にダウンロードが完了するのを待つ必要がなくなります。

表示するデータは常にあるはずです。アプリケーションと一緒に基本的なデータセットを含めると便利な場合があります。これにより、ネットワークがない場合でも、最初の実行時にデータベースにデータが入力されます。

regarding single vs multiple requests:

通常、単一のリクエストは複数の小さなリクエストよりも高速ですが、モバイルネットワークで失敗する可能性が高くなります。データリクエストがGSMネットワークで10秒以上かからない場合は、問題ないはずです。そうでない場合は、より小さなリクエストに分割することを検討してください。

于 2012-11-25T04:08:16.237 に答える