【问题标题】:How to develop an offline-first native Android app如何开发离线优先的原生 Android 应用
【发布时间】:2014-09-17 09:40:54
【问题描述】:

我们正在开发一款原生 Android 应用(iOS 和 Web 应用),用户可以在其中协作创建相册。

当设备无法与服务器连接时,我们希望获得尽可能无缝的体验。 类似Hoodie blog 中提到的内容,但 Hoodie 现在适用于 Web 和 iOS,我们现在正在寻找 Android。

问题

在客户端维护相册、朋友、图片(URL/本地,不是Bitmap)的数据。 能够在稍后将离线创建/更新操作同步到服务器,并解决冲突。

当前研究

  1. HTTPResponseCache:缺点:仅缓存已命中一次的请求。另外需要不同的系统来处理创建/更新操作。
  2. App42Kinvey:后端即服务;缺点:我们希望拥有自己的后端。
  3. Microsoft Sync Framework Toolkit: 不确定它在 Android 上的表现如何
  4. PouchDB
  5. Superbus:解决部分问题

自定义

在 Android 上的 SQLite 和服务器上的 MySQL 中维护数据 使用Android Sync Adapter 同步。 但是,这可能会很耗时并且在启动时会出现错误。

应该如何解决这个问题?

【问题讨论】:

    标签: android android-sqlite offline-caching offlineapps offline-mode


    【解决方案1】:

    我目前正在处理一个项目,即使用户离线,我们也需要跟踪交付并验证交付。我使用的方法是利用这个ContentProvider 插件Simple Content Provider。我检查是否有互联网,如果没有。它将数据存储到提供者并更改 DATABASE 中需要更改的任何内容,并使我的用户相信他或她已经完成了订单。我有一个SyncAdapter 等待互联网上线。而且,一旦数据库发生变化,我也有一个推送服务来刷新数据库。了解Google Cloud Messaging 将为您的用户节省大量电池寿命。那里可能有更好的选择。但是,根据我对 Android 的一点经验,这就是我可以提供的一点帮助。

    【讨论】:

    • 经过一番搜索,我认为确实是这样做的。谢谢。
    【解决方案2】:

    你看过CouchBase ServerCouchBase Lite吗?

    他们提供了一个名为SyncGateway 的强大工具,它可以为您处理服务器和内部数据库之间的所有同步和数据合并。您无需在移动应用程序中编写任何代码即可进行同步。

    Couchbase Lite 适用于 iOS 和 Android。 还有一个用于 Cordova/PhoneGap 的 plugin

    我从来没有编译过任何问题,只是为了iOS,记住为iOS6+编译,它不适用于iOS5

    【讨论】:

    • 不,之前没看过这个。不过看起来很有希望。现在,由于开发进行到一半,采用这种架构为时已晚。
    【解决方案3】:

    您可以查看一个名为 Wendy 的开源 api,最令人惊奇的是它使用了您现有的架构。

    【讨论】:

      猜你喜欢
      • 2016-08-18
      • 2015-04-08
      • 2016-02-14
      • 1970-01-01
      • 1970-01-01
      • 2017-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多