1

我需要在 iOS 应用程序中实现一个后台进程,该进程每 60 秒执行一次作业。我知道这只能在应用程序处于焦点时完成,但我确实希望这项工作在应用程序关闭后在后台完成运行。我将使用 GCD 调度一个计时器,该计时器每 60 秒使用dispatch_async或异步调用我的作业beginBackgroundTaskWithExpirationHandler

我想知道哪种方法最好,或者它们是否基本相同。beginBackgroundTaskWithExpirationHandler即使应用程序处于前台,也可以使用它来执行作业吗?还是我最好在应用程序状态更改时尝试取消作业,然后将作业作为后台任务重新启动?

4

1 回答 1

2

-beginBackgroundTaskWithExpirationHandler:不在后台线程/队列上运行代码。它告诉操作系统,当您的应用程序不活动时,您将继续工作。

两者的用途完全不同。

于 2012-10-22T17:47:52.817 回答