android - 如何在Android应用程序中同步服务器数据?

标签 android sqlite realm android-syncadapter couchbase-lite

<分区>

我正在构建一个 android 应用程序,其中涉及列出产品的详细信息。这些产品将包含 500 到 1000 个项目,并且随着时间的推移随着后端服务器的变化而发展。

为了避免每次都从服务器获取如此大的数据来显示列表,需要持久化到本地数据库,并通过从数据库查询来显示。

为了持久化数据,我探索了以下可用的方法。

  1. 原生 sqlite(使用同步适配器框架进行同步)
  2. Realm (不知道如何同步)
  3. Couchbase lite(有自己的同步网关)

但尚未得出最佳方法的任何结论。

由于数据量很大,我们需要通过应用程序离线访问数据,同步数据就变得非常重要。我仍在学习这些东西。

当后端发生一些变化时,有人可以指导我设计存储数据和同步数据的正确方向吗?

编辑:

虽然在Android 应用程序中设计数据同步有不同的 View 或多种方式,但需要了解以下几点:

  1. 存储选项
    一个。存储在本地 sqlite 或 NoSQL 数据库中,例如 Realm、CouchDB Lite?

  2. 同步选项
    一个。对于同步,我是否需要让 sqlite 数据库结构与服务器数据库相同?
    b. Realm 可以与 Sync 适配器结合使用吗?或者 Realm 是否有任何其他同步选项?

  3. 数据库设计
    一个。由于每个产品项目在单击它们时都会显示更多详细信息,因此需要使用另一个 API 调用获取产品详细信息,或者所有这些详细信息都包含在初始 API 调用中?遵循什么设计方法?

最佳答案

Since the data is large and we need to have offline access to data through app, syncing data becomes very important. I am still learning these things.

所以我对这个问题的想法是使用 Google Cloud Messaging 作为服务器将向所有客户端应用程序发送信号(如果服务器数据库发生变化)更新其本地数据库。

首先,当应用程序最初运行时,所有产品将被加载并保存到应用程序中,或者您可以根据需要显示它们。

因此,当有更新或新产品条目时,服务器将向所有客户端发送推送消息,告诉他们新产品已添加到服务器(您可以向客户端发送最大 4KB 的数据,在这种情况下,您应该发送您的产品编号)

然后您可以从服务器(通过产品 ID)获取数据并更新客户端本地数据库。

https://developers.google.com/cloud-messaging/

对于数据库,请参阅此链接:-

Should I use sqlite?

关于android - 如何在Android应用程序中同步服务器数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33471924/

相关文章:

ios - Realm :声明为链接对象属性来源的属性不存在

sql - 拆分空格分隔值并将它们映射到 SQLite 中的原始 ID?

java - AsyncTask 中的字符串越来越少

android - Android Studio 布局编辑器中缺少属性

android - 使用 OpenSL ES 在 Android 中录制 native 音频

python - 在 Django 中获取数据到 SQLite 数据库

SQLITE 按数字而非字母顺序

xcode - 对象 'name' 上不存在主键属性 'RealmSwiftPermissionRole'

java - .realm 文件中的 "Any"字段

android - 为什么没有从我的 APK 中复制 libgnuSTL_shared.so?