我有一个维护不同地理位置的本地 SQLite 数据库的 android 应用程序。
现在我想将该数据库连接到“云”以完成以下任务:
首次安装应用程序时(或根据要求)对所有内容进行初始下载
已在本地添加的新位置应上传到云端(自动)
应不时检查在线数据库是否有新的在线条目,并将其下载到本地数据库。
我在完成这个过程中遇到了很多问题。
首先是如何去做。我认为它涉及 contentProviders 和 syncProviders,但我不确定如何。我是否需要在 contentProvider 中复制我的 SQLite 数据库,或者我在底层设计中犯了一个错误以直接使用数据库,而不是通过自定义内容提供程序?
其次,位置记录不能简单地从在线数据库中上下复制,因为它们将具有冲突的 ID 号。我有几个关系表,例如将标签 ID 与位置 ID 相关联的“标签”。我的标签 ID 不一定与其他用户的标签 ID 匹配。与位置 ID 相同。因此,传输中需要涉及一些逻辑。 应该在哪里/如何正确处理?这是 contentResolver 的角色吗?(不确定那是什么)
第三,如果两个用户同时添加相同的位置(可能有不同的描述和细节)会发生什么? 是否有合并这些记录的最佳实践?
最后,构建/托管在线组件的最简单方法是什么? 这部分对我来说是全新的。我可以将主数据库放在公共保管箱文件夹中,还是需要从头开始构建自定义 php web 应用程序?或者是否有一个预先打包的解决方案可以使这部分更容易?