2012-04-16 8 views
2

私は自転車トレイルのデータベースを構築して共有するためのアンドロイドアプリを開発しています。Androidアプリ:ユーザー間でデータを共有する

ユーザーは、データベースのローカルコピーに自分の場所や歩道を追加したり、既存の説明、詳細などを編集することができます。
私は、アプリケーションのすべてのユーザーが、お互いに。たとえば、中央のWebベースのデータベースなどを介して。 データベース全体をアップロードするだけでは実際には機能しません。なぜなら、複数のユーザーが同時に同じオブジェクトに対して編集を行うことが予想されるからです。

この種のデータ共有を実現するための「ベストプラクティス」が定義されていますか?

+0

トレイルと位置を確定し、インターネットにアップロードするためのGPSトラッキング。答えは質問の中にあります。 – gobernador

+1

申し訳ありませんが、あなたはポイントを逃した。既にトレイルと場所のデータがあるので、複数のユーザーのデータをまとめて結合し、その結果を共有する方法を知りたい。 – Brent

答えて

0

私は、アルゴリズムはこのようなものであるべきだと思うあなたは2箇所が同じであるか否かを判断するのに良い方法が必要です。おそらく、1つの場所が異なる名前や綴りを持ち、わずかに異なるGPS座標を持つ可能性があります。また、複数の軌跡が同じGPS座標で開始する場合があります。

Iterate through the remote records, one by one 
     If the location doesn't exist locally 
     create it. 
     else if the record is identical 
      ignore it 
      else 
      if only one record changed 
       copy it to the opposite database 
      else 
       merge the data from the 2 records together somehow 

最後に、ローカルに作成されたレコードをリモートデータベースにアップロードする必要があります。

2

すべてのクライアントのデータ交換を処理するサーバーアプリケーションを作成する必要があります。サーバーアプリケーションをデータベースにリンクする必要があります。また、クライアントアプリケーション(ak:ユーザー)は、他のクライアントアプリケーションを更新するサーバーアプリケーションとのみ通信します。 Javaソケットを見て、それらをAsyncTaskクラス(Threadと似ていますが、アンドロイド専用です)に入れてください。

0

はジャクソンを見てみましょう:あなたはあなたのアプリケーション内の標準のJavaモデルを持っている場合はhttp://wiki.fasterxml.com/JacksonDataBinding

を、ジャクソンはあなたが中央のサーバに簡単に送ることができる、あなたはJSONに変換するのに役立ちます。

セントラルサーバーから新しいルートをプルダウンすると、ジャクソンを使用してJSONを逆モデル化してJavaモデルに戻すだけです。

注:

+0

JSONはデータ転送に関するものであり、同期に関するものではありません。私の問題は、データコンフリクトを回避/解決する方法と関係しています。 – Brent

関連する問題