我正在开发一个用于构建和共享自行车道数据库的Android应用程序。
用户可以将自己的位置和路径添加到数据库的本地副本,或编辑现有描述,详细信息等。
我想要一种机制,应用程序的所有用户可以相互共享他们的数据。例如,通过基于Web的中央数据库或其他东西。
它只是上传整个数据库并不真正起作用,因为我预计有些时候会有几个用户想要同时进行编辑,可能是同一个对象。
是否有完成此类数据共享的定义“最佳实践”?
答案 0 :(得分:2)
您应该创建一个服务器应用程序来处理所有客户端的数据交换。您的服务器应用程序必须链接到您的数据库。此外,您的客户端应用程序(ak:Users)将仅与将刷新其他客户端应用程序的服务器应用程序进行通信。看看Java套接字并记得将它们放在AsyncTask类中(类似于Thread,但仅用于android)。
答案 1 :(得分:0)
看看杰克逊:http://wiki.fasterxml.com/JacksonDataBinding
如果您的应用程序中有标准Java模型,Jackson会帮助您将其转换为JSON,您可以轻松地将其发送到中央服务器。
当您从中央服务器下拉新路由时,您只需使用Jackson将JSON反序列化为Java模型。
答案 2 :(得分:0)
我认为算法应该是这样的:
注意:您需要一种确定2个位置是否相同的好方法。据推测,单个位置可能具有不同的名称或拼写,并且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
最后,您需要将任何本地创建的记录上传到远程数据库。