如何在设备更新时跨设备共享和同步android sqlite数据库?

时间:2015-02-20 17:14:17

标签: android android-sqlite

我是Android应用开发者的新手。目前我正在开发一个具有sqlite数据库的应用程序。用户将一些数据存储在该数据库中。现在我想在我的应用程序中添加在线同步/数据共享功能 - 如果用户更新他/她设备的数据库(这意味着存储/删除数据)该应用程序的所有其他用户将通过互联网获得该更新(我的意思是他们的sqlite数据库将相应更新)。我怎么能这样做?

我搜索了这个,发现了Sync Adapter。但我仍然困惑同步适配器会解决我的问题。我如何跨设备共享sqlite数据库。

请给新手友好的答案。任何简单的教程/文档将不胜感激。

谢谢!

2 个答案:

答案 0 :(得分:1)

不幸的是,对于在服务器和服务器之间同步数据的问题,没有“简单”的解决方案。设备。正如你所说,SyncAdapter& ContentProvider是要走的路。这些确实很难使用&为新手开发者实现。

提供了另一种方式:

1。每当用户更改其设备上的数据时(即每当在数据库中创建新条目时),都会将布尔标志设置为true

2. 检查互联网是否开启。如果是,请使用Web服务在服务器上更新此数据。将标记设置为false

3. 如果互联网不可用,请暂停true

4. 创建一个BroadcastReceiver,只要网络状态发生变化(即互联网开启或关闭),该true就会被激活。如果Internet可用且标志为false,请调用Web服务以更新服务器上的数据。将标记设置为BroadcastReceiver

5. 相同的{{1}}还有另一项功能:如果互联网可用,请调用其他网络服务以从服务器获取新数据。每次互联网可用时都会发生这种情况。

答案 1 :(得分:1)

在每个设备上创建数据库 - 特定于存储系统等。

To"共享数据库"你需要共享数据。从本质上讲,它是一个导出/导入过程。因此,数据将从一个设备导出并导入另一个设备。

您可以通过以JSON或CSV格式存储数据来完成此操作。导出创建一个文件(或在内存中完成)然后需要发送视图网络(可能是HTTP)到服务器。从那里,另一台设备可以下载并将其导入数据库。

导入过程必须考虑可能的数据冲突(重复等)和可能的不同数据库版本/结构。这可能非常复杂,非常快。在发布之前尽可能多地进行开发 - 否则您将遇到各种同步问题。

SyncAdapter可以为您简化部分流程。它也可能没有你需要或期望的。以下是有关该信息的更多信息:

Own sync adapter for Android?