iOS后台执行

我正在尝试了解苹果的后台执行文档:

configuration完成后,NSURLSession对象会在适当的时候无缝地将上传和下载任务交给系统。 如果任务在您的应用程序仍在运行时(在前台或后台)完成,则会话对象以通常的方式通知其委托。 如果任务尚未完成,系统终止您的应用程序,系统将自动继续在后台pipe理任务。 如果用户终止您的应用程序,系统将取消所有待处理的任务。

当与后台会话相关的所有任务都完成后,系统重新启动一个已终止的应用程序(假设sessionSendsLaunchEvents属性设置为YES,并且用户不强制退出应用程序)并调用应用程序委托的应用程序:handleEventsForBackgroundURLSession:completionHandler : 方法。 (系统还可以重新启动应用程序以处理需要应用程序关注的身份validation挑战或其他与任务相关的事件。)在实现该委托方法时,使用提供的标识符创build一个新的NSURLSessionConfiguration和NSURLSession对象,其configuration与之前。 系统将您的新会话对象重新连接到之前的任务,并将其状态报告给会话对象的委托。

如果我使用NSURLSession ,那么当应用程序在后台进行上传过程仍在进行时,只要应用程序没有被用户终止,我们就不会终止进程(我假设这是通过从应用程序列表中杀死我的应用程序)?

仔细阅读文本。 就像所有好的文档一样,它非常清楚地说明了它的含义,而且你只需要仔细阅读。

你没有仔细阅读。

有三种情况:当任务完成时,您的应用程序仍在运行,上次任务完成时系统已closures应用程序,或者在最后一个任务完成之前用户closures了应用程序。 不,它没有说任何地方的应用程序保持活着。 而且文件清楚地说明了每种情况下会发生什么。

iOS会杀死位于后台的应用程序,并让用户看起来仍在运行。