首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当应用程序有internet连接时,将脱机核心数据与服务器同步

当应用程序有internet连接时,将脱机核心数据与服务器同步
EN

Stack Overflow用户
提问于 2014-03-11 13:21:00
回答 1查看 2.8K关注 0票数 5

我需要创建离线模块来存储我的所有请求,然后当Internet连接可用时,模块将一个一个地向服务器发出请求。

现在我正在使用Core和AFNetworking 2.0,但我正在在线工作。接下来是在线算法:

  1. 创建请求
  2. 检查互联网连接
  3. 等待回应
  4. 基于JSON响应创建对象(记录在db中)

但是离线算法有一个小的不同:

  1. 创建请求
  2. 检查互联网连接
  3. 创建代理对象(记录在db中)
  4. 收听互联网连接
  5. 将临时数据与服务器同步。

在temp对象之后需要更新的惟一标识符和关系将与后端的对象同步。

我的问题是,是否已经有了解决方案,如何与服务器同步脱机数据?

或者你有更好的算法,这对我也没问题)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-11 14:59:05

我建议以下流程:

  1. 实现具有“私有队列”上下文的“请求管理器”
  2. 当某个模块需要发出请求时,它会使用管理器进行请求。
  3. 当需要请求时,管理器总是使用创建日期的时间戳将其写入存储区(使用其上下文)。
  4. 管理器还将侦听联机/脱机状态更改。
    1. 当检测到联机状态时,托管存储区将查询挂起的请求,并将它们逐一发送给服务器。
    2. 当需要新的请求时,管理器将按照(4.1)中的描述来防止请求饥饿。
    3. 您可以使用一个标志,指示管理器当前是否在运行(处理请求),这样插入的新请求不会触发从存储区获取信息。
    4. 分发给服务器的reqests可能有自己的上下文来写到商店,这样它们就不会侵入管理器的工作了。
    5. 当检测到“脱机”状态时,经理可能会取消所有活动请求(下次检测到联机状态时将执行这些请求)。
    6. 当请求完成后(提交到服务器和本地存储),它将从存储区中删除。

在激活管理器之前,您可以查询存储中挂起的请求,并取消/删除那些不再相关的请求。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22326956

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档