如果我使用此方法运行任务,但是将应用程序保留在前台,那么当app在前台时会调用expirationHandler吗?
我每次进入后台时都会使用它来启动位置服务,但有时用户输入后台并立即返回应用,这会调用 expirationHandler吗?
func beginBackgroundTask(expirationHandler handler: (() -> Void)? = nil) -> UIBackgroundTaskIdentifier
答案 0 :(得分:0)
文档说:
在应用程序的剩余后台时间即将到达0之前不久将调用的处理程序。使用该处理程序可以清理并标记后台任务的结束。无法明确结束任务将导致应用程序终止。系统会在主线程上同步调用处理程序,从而暂时阻止应用暂停。
似乎在前台模式下未调用到期处理程序。经过漫长的等待,我进入了后台模式,然后在约170秒后,所有先前报告的后台任务都被调用过期处理程序。