我需要在iOS应用程序中实现一个后台进程,该进程每60秒执行一次工作。我知道只能在应用程序处于焦点状态时才能完成此操作,但是我确实希望这项工作在应用程序关闭后能够在后台完成运行。我将使用GCD调度一个计时器,该计时器每隔60秒使用dispatch_async
或beginBackgroundTaskWithExpirationHandler
异步调用我的工作。
我想知道哪种方法最好,或者本质上是相同的。即使应用程序在前台,也可以使用beginBackgroundTaskWithExpirationHandler
执行作业吗?还是我最好在应用程序状态更改时尝试取消作业,然后将其作为后台任务重新启动?
最佳答案
-beginBackgroundTaskWithExpirationHandler:
不在后台线程/队列上运行代码。它告诉操作系统您将在应用程序不 Activity 时继续进行工作。
两者的目的完全不同。
关于objective-c - dispatch_async与beginBackgroundTaskWithExpirationHandler,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13016822/