【发布时间】:2013-04-02 15:21:05
【问题描述】:
我正在更新我的应用程序中的一些内容,我希望在用户退出应用程序时完成。看来我必须停止当前正在运行的更新并在 applicationDidEnterBackground 方法中启动另一个更新。如果我可以在调用该方法之前将某些工作标记为我想在后台运行的工作,那将更加方便。
这是场景:
- 我正在尝试更新内容并开始运行需要一些时间的 SQL 更新。 (超过 5 秒您必须从
applicationDidEnterBackground返回。) - 用户离开应用程序。当前更新已暂停,但我真的希望它完成。
- 我可以开始一个新的更新,从另一个停止的地方开始,但如果用户切换回应用程序,我会遇到 SQL 级别的并发问题。
是唯一的选择将 SQL 查询分解为更小的批次,以便我可以在 applicationDidEnterBackground 回调中干净地切换吗?它几乎使执行时间加倍。 (我不担心操作系统会杀死我的后台任务,简历处理得很好。)
理想情况下,我可以让现有的工作在后台无缝继续(在操作系统的情况下),这可能吗?有更好的选择吗?
(我已经阅读了Programming Guide关于执行后台任务的部分。)
【问题讨论】:
标签: ios concurrency grand-central-dispatch