iOS后台任务将在前台完成?

时间:2017-01-11 07:57:52

标签: ios swift background

如果我使用此方法运行任务,但是将应用程序保留在前台,那么当app在前台时会调用expirationHandler吗?

我每次进入后台时都会使用它来启动位置服务,但有时用户输入后台并立即返回应用,这会调用 expirationHandler吗?

func beginBackgroundTask(expirationHandler handler: (() -> Void)? = nil) -> UIBackgroundTaskIdentifier

1 个答案:

答案 0 :(得分:0)

文档说:

  

在应用程序的剩余后台时间即将到达0之前不久将调用的处理程序。使用该处理程序可以清理并标记后台任务的结束。无法明确结束任务将导致应用程序终止。系统会在主线程上同步调用处理程序,从而暂时阻止应用暂停。

https://developer.apple.com/documentation/uikit/uiapplication/1623031-beginbackgroundtaskwithexpiratio

似乎在前台模式下未调用到期处理程序。经过漫长的等待,我进入了后台模式,然后在约170秒后,所有先前报告的后台任务都被调用过期处理程序。