我需要在iOS应用中实现后台进程,每60秒执行一次作业。我知道这只能在应用程序聚焦时完成,但我确实希望这个工作在关闭应用程序后在后台运行完毕。我将使用GCD调度一个定时器,该定时器每隔60秒使用dispatch_async
或beginBackgroundTaskWithExpirationHandler
异步调用我的作业。
我想知道哪种方法最好,或者它们基本相同。即使应用程序在前台,也可以使用beginBackgroundTaskWithExpirationHandler
执行作业吗?或者我最好在应用程序状态更改时尝试取消作业,然后将作业重新启动作为后台任务?
答案 0 :(得分:2)
-beginBackgroundTaskWithExpirationHandler:
不在后台线程/队列上运行代码。它告诉操作系统,当您的应用程序未处于活动状态时,您将继续工作。
这两者完全不同。