如何在iOS中实现长时间运行的任务?
最近我从我的客户那里得到要求,我们需要在后台处理一些执行。此执行可能会持续10分钟或20分钟。如何在iOS中实现长时间运行的任务?
有什么办法可以达到这个目的吗?我知道iOS列出了只有那些可以在后台运行的应用程序类型&。但我检查了&我的应用程序不适合列出所有应用程序类型。所以现在我对此感到怀疑。
任何人都有解决方案?
感谢 希亚姆
使用背景取在功能可用。
后台提取模式每10分钟执行一次。
样本代码听到:https://mobisoftinfotech.com/resources/mguide/background-fetch-ios/
从上面的教程忘记该方法beginBackgroundUploadTask。
在这里我的背景任务是不从互联网上下载一些内容。我的后台任务在本地运行,并在后台执行一些图像处理。所以这里这个背景获取将不起作用。 – user3347272
后台提取只会让您花几秒钟下载一些数据。这不是运行任意长的流程。仅仅因为你要求10分钟并不意味着你会得到它。该系统可以并且确实会限制你的速度。 –
//试试这个:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0ul), ^(void) {
// Perform long running process
dispatch_async(dispatch_get_main_queue(), ^{
// Update the UI
});
});
// Continue doing other stuff
它可以帮助无限时间运行长时间运行的任务吗? – user3347272
此代码与应用程序处于前台时运行后台队列相关。我相信这里的问题是如何在应用程序本身处于后台时运行进程。 –
这个[文件]看看(https://developer.apple.com/library/content/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution。 html)寻找这部分“执行有限长度的任务”,我认为这解决了你的问题。因为你有一个不是无限的后台任务,你可以要求更多的时间来完成任务 –
@ user3347272检查我的答案。 –
José的链接是最好的解决方案。没有完整的解决方案来满足您的要求。您无法在后台任意长时间运行iOS应用。即使您提出了一些棘手的解决方法,App Store也会明确禁止。无论如何,运行图像处理10-20分钟对于iPhone而言都是太多的电池消耗。这不适合在设备上执行。 –