Xamarin iOS:在后台提取中调用过期处理程序时最终会被调用

时间:2017-09-25 01:35:04

标签: ios xamarin background-fetch expirationhandler

如果我在PerformFetch中有一个函数在iOS中进行后台提取。

我终于"终于" PerformFetch中的语句。当后台提取到期时,finally块也会调用。 或者它将直接进入ExpirationHandler块以在操作系统杀死应用程序之前进行清理

1 个答案:

答案 0 :(得分:0)

后台中调用PerformFetchapplication:performFetchWithCompletionHandler:)时,您有大约30秒的时间从该方法返回,否则该进程将被终止。

如果终止,您的代码将永远不会使用finally覆盖进入PerformFetch阻止,也不会调用WillTerminateapplicationWillTerminate:)。由于UIBackgroundFetchResult.Failed没有返回,因此iOS会将其视为PerformFetch

如果您在BeginBackgroundTask内通过beginBackgroundTaskWithName:expirationHandler:PerformFetch)标记了某段代码的开头,那么expirationHandler是操作系统终止PerformFetch时调用。