gpt4 book ai didi

android - 在 Android App 和网络服务器之间同步数据

转载 作者:IT老高 更新时间:2023-10-28 12:51:13 25 4
gpt4 key购买 nike

我想在 Android 应用程序和服务器之间同步数据(例如数据库记录、媒体)。如果你看过 Evernote 或类似的应用程序,你肯定明白我的意思。

我有一些问题(假设我们要同步数据库记录):

  1. 每个用户都有自己的一部分服务器空间(例如EvernoteDropbox)。也许用户通过手机创建新记录并在服务器中创建新记录。 如何将这些记录匹配在一起?如果有相同 ID 的记录您建议我使用什么算法?

  2. 除了JSON有没有什么方法可以在手机设备和服务器之间发送数据?

  3. 如果 SyncAdapterContentProvider 可以解决我的问题,请为我解释清楚。 (如果您可以向我提供一些示例或教程,或者任何有助于扩大/指导我的搜索的建议或关键字,我们将不胜感激。

最佳答案

我将尝试通过解决更大的问题来回答您的所有问题:如何在网络服务器和 Android 应用程序之间同步数据?


在您的网络服务器和 android 应用程序之间同步数据需要您的 android 设备上的几个不同组件。

持久存储:

这就是您的手机实际存储从网络服务器接收到的数据的方式。实现此目的的一种可能方法是编写由 Sqlite 数据库支持的自定义 ContentProvider。可以在此处找到内容提供者的体面教程:http://thinkandroid.wordpress.com/2010/01/13/writing-your-own-contentprovider/

ContentProvider 定义了一个一致的接口(interface)来与您存储的数据进行交互。如果您愿意,它还可以允许其他应用程序与您的数据进行交互。您的 ContentProvider 背后可能是一个 Sqlite 数据库、一个缓存或任何任意存储机制。

虽然我当然会推荐使用带有 Sqlite 数据库的 ContentProvider,但您可以使用任何您想要的基于 java 的存储机制。

数据交换格式:

这是您用于在网络服务器和 Android 应用程序之间发送数据的格式。目前最流行的两种格式是 XML 和 JSON。选择格式时,您应该考虑可用的序列化库类型。我知道有一个很棒的 json 序列化库,叫做 gson: https://github.com/google/gson ,尽管我确信 XML 存在类似的库。

同步服务

您将需要某种异步任务,该任务可以从您的服务器获取新数据并刷新移动内容以反射(reflect)服务器的内容。每当您对内容进行本地更改并希望反射(reflect)这些更改时,您还需要通知服务器。 Android 提供了 SyncAdapter 模式来轻松解决此模式。您需要注册用户帐户,然后 Android 将为您执行许多魔法,并允许您自动同步。这是一个很好的教程:http://www.c99.org/2010/01/23/writing-an-android-sync-provider-part-1/


至于如何识别记录是否相同,通常您将创建具有唯一 id 的项目,并将其存储在 android 设备和服务器上。您可以使用它来确保您引用的是相同的引用。此外,您可以存储“updated_at”之类的列属性,以确保您始终获得最新数据,或者您不会意外覆盖新写入的数据。

关于android - 在 Android App 和网络服务器之间同步数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10829371/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com