我需要在 iOS 应用程序中实现一个后台进程,该进程每 60 秒执行一次作业。我知道这只能在应用程序处于焦点时完成,但我确实希望这项工作在应用程序关闭后在后台完成运行。我将使用 GCD 调度一个计时器,该计时器每 60 秒使用dispatch_async
或异步调用我的作业beginBackgroundTaskWithExpirationHandler
。
我想知道哪种方法最好,或者它们是否基本相同。beginBackgroundTaskWithExpirationHandler
即使应用程序处于前台,也可以使用它来执行作业吗?还是我最好在应用程序状态更改时尝试取消作业,然后将作业作为后台任务重新启动?