2

我正在开发一个用于构建和共享自行车道数据库的安卓应用程序。

用户将能够将他们自己的位置和轨迹添加到他们的本地数据库副本中,或者编辑现有的描述、详细信息等。
我想要一种机制,让应用程序的所有用户都可以相互共享他们的数据。例如,通过基于网络的中央数据库或其他方式。仅仅上传整个数据库实际上并不奏效,因为我预计会有多个用户想要同时进行编辑的时候,可能是对同一个对象。

是否有明确的“最佳实践”来完成这种数据共享?

4

3 回答 3

2

您应该创建一个服务器应用程序来处理所有客户端的数据交换。您的服务器应用程序必须链接到您的数据库。此外,您的客户端应用程序(又名:用户)将仅与服务器应用程序通信,这将刷新您的其他客户端应用程序。看看 Java 套接字,记得把它们放在一个 AsyncTask 类中(类似于 Thread,但仅用于 android)。

于 2012-04-17T00:11:48.450 回答
0

看看杰克逊:http ://wiki.fasterxml.com/JacksonDataBinding

如果您的应用程序中有标准 Java 模型,Jackson 将帮助您将其转换为 JSON,您可以轻松地将其发送到中央服务器。

当您从中央服务器拉下新路由时,您只需使用 Jackson 将 JSON 反序列化回您的 Java 模型。

于 2012-04-17T01:12:04.257 回答
0

我认为算法应该是这样的:

注意:您需要一种确定两个位置是否相同的好方法。据推测,一个位置可能有不同的名称或拼写,以及稍微不同的 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

最后,您需要将任何本地创建的记录上传到远程数据库。

于 2012-04-19T13:32:45.933 回答