如果应用程序从任务管理器中被杀死,NSUrlSession是否继续文件传输?

时间:2014-07-30 21:37:05

标签: ios objective-c nsurlsession nsurlsessiondownloadtask

我尝试过网上的各种样本(最后一个是this one),以便更好地了解NSUrlSession

我希望看到的内容:即使触发它们的应用程序被杀死(例如用户通过任务管理器),文件下载仍将继续。然而,这似乎并没有发生。

如果应用程序被终止,这是配置问题还是后台文件传输不起作用? 我认为整个想法是iOS将重启应用程序。

2 个答案:

答案 0 :(得分:9)

如果系统杀死您的应用并且您的后台会话具有有效下载,则您的下载将继续,系统将在下载完成后启动您的应用。但是,如果用户强制退出您的应用,则会取消所有任务。

Documentation for backgroundSessionConfigurationWithIdentifier:

  

如果iOS应用程序被系统终止并重新启动,则该应用程序可以   使用相同的标识符来创建新的配置对象和   会话并检索正在进行的传输的状态   终止的时间。此行为仅适用于正常情况   系统终止应用程序。 如果用户终止该应用   从多任务屏幕,系统取消所有会话   后台传输。此外,系统不会自动进行   重新启动用户强制退出的应用程序。用户必须   在转移再次开始之前明确重新启动应用程序。

答案 1 :(得分:0)

否 - 当用户强制退出时,应用程序不会重新启动后台下载。

application:didReceiveRemoteNotification:fetchCompletionHandler:的iOS8文档说:

  

使用此方法处理应用的传入远程通知。   与应用程序不同:didReceiveRemoteNotification:方法,即   只有当您的应用程序在前台即系统中运行时才会调用   当您的应用在前台运行或运行时调用此方法   背景。此外,如果您启用了远程通知   在后台模式下,系统启动你的应用程序(或从中唤醒它)   暂停状态)并在推送时将其置于后台状态   通知到了。但是,系统不会自动进行   如果用户强行退出,请启动您的应用。在那种情况下,   用户必须重新启动应用程序或在系统之前重新启动设备   尝试再次自动启动您的应用。