如何开发离线优先的原生Android应用程序

时间:2014-09-17 09:40:54

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

我们正在开发一个原生的Android应用程序(iOS和网络可供用户),用户可以在其中协作创建相册。

当设备无法与服务器连接时,我们希望尽可能无缝体验。 这个Hoodie blog中提到过的东西,但是Hoodie现在正用于Web和iOS,我们现在正在寻找Android。

问题

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

当前研究

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

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

    如何处理这个问题?

3 个答案:

答案 0 :(得分:9)

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

答案 1 :(得分:2)

你看过CouchBase ServerCouchBase Lite吗?

它们为您提供了一个强大的工具,称为SyncGateway,它可以帮助您完成所有同步和服务器与内部数据库之间数据的合并。您无需在移动应用中对任何内容进行编码以进行同步。

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

我编译它从来没有遇到任何问题,只是为了iOS而不记得为iOS6 +编译,它不能用于iOS5

答案 2 :(得分:0)

您可以查看名为Wendy的开源api,最令人惊讶的是它使用了您现有的体系结构。