【问题标题】:Backgrounding technique in iOS 7 for database updateiOS 7 中用于数据库更新的后台技术
【发布时间】:2013-12-20 17:17:59
【问题描述】:

我的应用程序首先下载一个可能很大的文件,然后读取该文件更新我的 sqlite 数据库。我的问题是,如果我的应用程序在此过程中处于后台,我最终会导致数据库损坏或数据丢失(因为更新过程被中断)

对于下载大文件的第一个问题,我可以使用

后台传输服务技术

但是,无论我的应用程序是在后台还是前台,我都没有找到一个解决方案来更新我的本地 sqlite 数据库而不会中断

【问题讨论】:

  • 后台任务 (ios 6) 有 5 分钟的窗口来完成他们的工作。你真的认为你的需要那么多时间吗?
  • 实际上在 IOS 6 后台任务有一个 10 分钟 窗口而不是 5,来完成他们的工作。但是,我要求 IOS 7 的解决方案
  • 如果一项任务在移动设备上的活动时间超过 5 分钟,您可能会将 iPhone 与 PC 混淆。
  • @Alex 显然你对拥有数十万数据的商业应用一无所知

标签: ios sqlite background-process


【解决方案1】:

我有一个建议,不要在后台更新数据库,但也许是解决方案。

首先,您需要一种方法来帮助您保留处理和更新数据库的文件的名称。(也许您可以将其名称保留在 plist 文件中)。

然后,您在后台正常下载文件,一旦您的应用回到前台,您就会遍历下载的文件并获取未处理的文件,然后开始更新您的数据库。

【讨论】:

  • 大文件中途更新中断怎么办?
  • @Loukas 如果被打断,你会在下一圈更新,直到更新完成并标记为已更新。
  • 您的建议是一种解决方法。我正在寻找一种开箱即用的解决方案,它不涉及我更改同步代码并且不必保留我执行的每个插入或更新的状态和行号
  • KudoCC 实际上是正确的,这就是移动设备上应用程序生命周期的全部内容。如果您的任务可能需要超过分配给后台任务的 5 或 10 分钟,并且您不想跟踪更新状态,您有什么选择?无论如何,捕获最后提交的索引并不难,KudoCC 是一个可行的解决方案。
猜你喜欢
  • 2010-09-23
  • 1970-01-01
  • 1970-01-01
  • 2014-07-24
  • 1970-01-01
  • 1970-01-01
  • 2023-03-22
  • 1970-01-01
  • 2018-10-14
相关资源
最近更新 更多