iOS后台任务将在前台完成?
若我使用此方法运行任务,但将应用程序保持在前台,当应用程序处于前台时是否会调用expirationHandler 每次我进入后台时,我都会使用它启动定位服务,但有时用户进入后台并立即返回应用程序,这会调用expirationHandler吗?iOS后台任务将在前台完成?,ios,swift,background,Ios,Swift,Background,若我使用此方法运行任务,但将应用程序保持在前台,当应用程序处于前台时是否会调用expirationHandler 每次我进入后台时,我都会使用它启动定位服务,但有时用户进入后台并立即返回应用程序,这会调用expirationHandler吗? func beginBackgroundTask(expirationHandler handler: (() -> Void)? = nil) -> UIBackgroundTaskIdentifier 文件说: 在应用程序剩余后台时间达到
func beginBackgroundTask(expirationHandler handler: (() -> Void)? = nil) -> UIBackgroundTaskIdentifier
文件说:
在应用程序剩余后台时间达到0之前不久调用的处理程序。使用此处理程序清理并标记后台任务的结束。未能明确结束任务将导致应用程序终止。系统在主线程上同步调用处理程序,暂时阻止应用程序的暂停
似乎在前台模式下没有调用过期处理程序。经过很长时间的等待,我进入后台模式,然后在大约170秒后,所有先前报告的后台任务都会调用过期处理程序。您能说得更清楚一点吗?你想达到什么目的?@AhmadF谢谢,我更新了描述如果我没有弄错,我们可能需要查看该方法的实现以进行判断,这取决于你在哪里调用
处理程序。闭包是自包含的功能块,可以在代码中传递和使用,不能保证闭包代码应该在后台或前台运行,这取决于您对它的调用。可能对你的情况有帮助…情况是:1。转到报告后台任务的后台。2.立即返回前台,但仍有已创建且处于活动状态的后台任务。问题:当它停留在前台时会调用过期处理程序吗?