如何在更新时跨设备共享和同步 android sqlite 数据库?
How to share and sync android sqlite database across devices when they are updated?
我是新手 android 应用程序开发人员。目前我正在开发一个具有 sqlite 数据库的应用程序。用户在该数据库中存储一些数据。现在我想在我的应用程序中添加在线同步/数据共享功能 - 如果用户更新 his/her 设备的数据库(这意味着存储/删除数据)该应用程序的所有其他用户将通过互联网获得该更新(我的意思是他们的 sqlite 数据库将相应更新)。我该怎么做?
我对此进行了搜索并找到了有关 Sync Adapter 的信息。但我仍然对同步适配器是否能解决我的问题感到困惑。以及如何跨设备共享 sqlite 数据库。
请新手友善回答。任何简单的教程/文档将不胜感激。
谢谢!
不幸的是,没有"easy"解决服务器和设备之间同步数据的问题。正如您所说,SyncAdapter
和 ContentProvider
是正确的选择。对于新手开发者来说,这些确实很难使用和实现。
提供了另一种方法:
1. 每当用户更改其设备上的数据时(即每当在数据库中创建新条目时),将布尔标志设置为 true
。
2. 检查互联网是否开启。如果是,请使用 Web 服务更新服务器上的此数据。将标志设置为 false
.
3.如果网络不可用,让flag保持true
.
4. 创建一个 BroadcastReceiver
,只要网络状态发生变化(即互联网打开或关闭),它就会被激活。如果 Internet 可用且标志为 true
,则调用 Web 服务以更新服务器上的数据。将标志设置为 false
.
5. 同样的BroadcastReceiver
还有一个功能:如果网络可用,调用另一个网络服务从服务器获取新数据。每次互联网可用时都会发生这种情况。
在每个设备上创建数据库 - 特定于存储系统等
您需要与 "share a database" 共享数据。本质上,它是一个 export/import 过程。因此,数据将从一台设备导出并导入另一台设备。
您可以通过以 JSON 或 CSV 格式存储数据来实现。导出创建一个文件(或在内存中完成),然后需要将网络(可能是 HTTP)发送到服务器。另一台设备可以从那里下载并将其导入数据库。
导入过程必须考虑可能的数据冲突(重复等)和可能的不同数据库 versions/structures。这会很快变得非常复杂。在发布之前尽可能多地开发——否则你会遇到各种同步问题。
SyncAdapter
可以为您简化这个过程。它也可能无法满足您的需要或期望。以下是相关的更多信息:
Own sync adapter for Android?
我是新手 android 应用程序开发人员。目前我正在开发一个具有 sqlite 数据库的应用程序。用户在该数据库中存储一些数据。现在我想在我的应用程序中添加在线同步/数据共享功能 - 如果用户更新 his/her 设备的数据库(这意味着存储/删除数据)该应用程序的所有其他用户将通过互联网获得该更新(我的意思是他们的 sqlite 数据库将相应更新)。我该怎么做?
我对此进行了搜索并找到了有关 Sync Adapter 的信息。但我仍然对同步适配器是否能解决我的问题感到困惑。以及如何跨设备共享 sqlite 数据库。
请新手友善回答。任何简单的教程/文档将不胜感激。
谢谢!
不幸的是,没有"easy"解决服务器和设备之间同步数据的问题。正如您所说,SyncAdapter
和 ContentProvider
是正确的选择。对于新手开发者来说,这些确实很难使用和实现。
提供了另一种方法:
1. 每当用户更改其设备上的数据时(即每当在数据库中创建新条目时),将布尔标志设置为 true
。
2. 检查互联网是否开启。如果是,请使用 Web 服务更新服务器上的此数据。将标志设置为 false
.
3.如果网络不可用,让flag保持true
.
4. 创建一个 BroadcastReceiver
,只要网络状态发生变化(即互联网打开或关闭),它就会被激活。如果 Internet 可用且标志为 true
,则调用 Web 服务以更新服务器上的数据。将标志设置为 false
.
5. 同样的BroadcastReceiver
还有一个功能:如果网络可用,调用另一个网络服务从服务器获取新数据。每次互联网可用时都会发生这种情况。
在每个设备上创建数据库 - 特定于存储系统等
您需要与 "share a database" 共享数据。本质上,它是一个 export/import 过程。因此,数据将从一台设备导出并导入另一台设备。
您可以通过以 JSON 或 CSV 格式存储数据来实现。导出创建一个文件(或在内存中完成),然后需要将网络(可能是 HTTP)发送到服务器。另一台设备可以从那里下载并将其导入数据库。
导入过程必须考虑可能的数据冲突(重复等)和可能的不同数据库 versions/structures。这会很快变得非常复杂。在发布之前尽可能多地开发——否则你会遇到各种同步问题。
SyncAdapter
可以为您简化这个过程。它也可能无法满足您的需要或期望。以下是相关的更多信息:
Own sync adapter for Android?