当应用程序在30秒后台执行完成后返回前台时会发生什么?

时间:2018-01-05 15:20:42

标签: ios

如果一个应用程序开始在前台执行某些活动,那么它会移动到后台并继续执行操作系统允许它运行的30秒,但是在30秒内它还没有完成它的工作做。

那么当应用程序接下来到达前台时会发生什么?当30秒上升时,在执行过程中进行的任何处理都会自动恢复到操作系统在后台停止并且30秒完成后暂停的时间点吗?

(类似的问题 - 假设应用程序调用UIApplication.setMinimumBackgroundFetchInterval()。 然后,如果用户将应用程序移动到后台,它运行30秒然后停止,然后操作系统在后台运行它,因为已经调用了setMinimumBackgroundFetchInterval,它是否恢复了它在30秒结束时所执行的操作? )

1 个答案:

答案 0 :(得分:0)

不,它不会继续。看来您正在寻找的答案可以在文档的这一部分(强调我的)中找到,具体取决于您如何将任务转移到后台:

https://developer.apple.com/documentation/uikit/uiapplication/1623051-beginbackgroundtask

  

必须通过对endBackgroundTask(_ :)方法的匹配调用来平衡对此方法的每次调用。运行后台任务的应用程序运行它们的时间有限。 (您可以使用backgroundTimeRemaining属性找出可用的时间。)如果在时间到期之前没有为每个任务调用endBackgroundTask(_ :),系统会终止应用。如果在handler参数中提供块对象,系统会在时间到期之前调用您的处理程序,以便您有机会结束任务。

https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623125-application

  

调用此方法时,您的应用程序最多有30秒的挂钟时间来执行下载操作并调用指定的完成处理程序块。实际上,您的应用程序应在下载所需数据后尽快调用完成处理程序块。如果您未及时致电完成处理程序,您的应用已终止