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