【问题标题】:Couchdb on Android with the 2.0 API带有 2.0 API 的 Android 上的 Couchdb
【发布时间】:2011-11-08 18:57:18
【问题描述】:

我在一个 android 项目中工作,这个想法很简单: 我只需要记录按下按钮的时间。这部分扁平而简单。

问题是我需要实时同步数据(或至少以非常可接受的延迟

为了实现这一点,我需要复制数据,而 couchdb 似乎提供了这一点。

所以,我开始测试一些例子:

但它们似乎都不适用于this instructions。我的意思是它可以工作,使 apk 文件工作,安装成功,但是当应用程序启动时它会继续运行并且什么都不做。

我了解 Android 上的 CouchDB 的工作方式如下:

  • 安装 CouchDB 服务,以便多个应用程序可以使用此服务。
  • 我的 android 应用程序需要通过执行、POST、GET、PUT 等请求使用 API 来处理此 CouchDB 服务。

我的问题:

  • 如何使用 2.0 API 完成上述示例?

更新:

可能的相关链接:https://groups.google.com/group/mobile-couchbase/browse_thread/thread/83816c0d0f1b050b

更新 2:

看来问题出在我所有平板电脑的CPU版本都是armv5。

Bug 相关:http://www.couchbase.org/issues/browse/CBMA-13

我还没有在 arm7v cpu 中测试过,但我会在几个小时内完成。

更新 3:

我已经测试了两次应用程序,但仍然无法使用 (ARM)armeabi-7va

更新 4:

我在几个设备上测试了移动蒲团示例:

  • arm5v:测试失败(模拟器和真实设备)、应用市场和自己的构建。
  • arm6v:测试失败(真实设备),应用市场和自己的构建。
  • arm7v:测试失败(模拟器),应用市场和自己的构建。

失败的方式太多了,我很沮丧。即使我设法在 arm5v 中运行 couchdb,我也必须处理这些主要错误 1 2

【问题讨论】:

  • 你需要集中你的问题。

标签: android couchdb


【解决方案1】:

我们也在一个主要项目中使用 Android 上的 CouchDB。我已经报告了这两个错误,不幸的是它们仍然没有修复。尽管如此,还是有一些解决方法:

CBMA-10: 如果您在开始复制之前通过 HTTP PUT 手动创建目标数据库,则不需要 create_target 并且一切正常。

CBMA-3: 如果您想通过调用 _replicate 开始复制,并且在复制取消后线程仍然阻塞,您可以手动取消此请求。不幸的是,某些 android 版本存在错误,因此调用 httpRequest.abort() 不起作用(请参阅 http://code.google.com/p/android/issues/detail?id=7933)。您可以通过注入自定义的 SocketFactory 来解决此问题,以访问请求使用的套接字并调用 shutdownInput() 导致请求中止。 另一种选择是使用复制器数据库(参见https://gist.github.com/832610)。在这种情况下,复制期间没有阻塞线程,但您必须轮询复制器数据库才能识别复制何时完成。

除了这些问题之外,在移动平台上使用 CouchDB 的复制机制时还有其他问题。尚未完全采用该实现来支持移动场景。因此,如果网络连接不稳定,则复制我的挂起。此外,还有一种具有指数回退的重试机制,适用于服务器安装,但不适用于连接丢失是常规事件的移动平台。因此,一般来说,您必须仔细决定是否已经想在这个早期状态下使用移动 CouchDB。也许你应该推迟你的决定,直到第一个正式的 GA 版本(Couchbase 的人在 12 月宣布了这一点)。

【讨论】:

  • 很好的答案,我期待 12 月的更新和 arm5v。
猜你喜欢
  • 2017-11-01
  • 2013-07-12
  • 2017-01-12
  • 2023-04-08
  • 1970-01-01
  • 2012-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多