【问题标题】:IOS: download of multiple files in backgroundIOS:后台下载多个文件
【发布时间】:2014-05-07 16:11:54
【问题描述】:

我正在开发一个必须下载多个文件的应用程序。当应用程序在前台时,我没有任何问题。
要在应用程序处于后台时继续下载,我使用以下代码(来自iOS Background downloads when the app is not active):

self.backgroundTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{ [[UIApplication sharedApplication] endBackgroundTask:self.backgroundTask]; self.backgroundTask = UIBackgroundTaskInvalid; }]; /* 这里是你下载的代码,比如getDataFromServer方法 */ [self getDataFromServer]; // 它的虚拟方法 /* 你下载的代码在这里结束 */ dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ [[UIApplication sharedApplication] endBackgroundTask:self.backgroundTask]; self.backgroundTask = UIBackgroundTaskInvalid; });

在设备屏幕打开之前,此代码是可以的。但是当设备进入待机状态时,会发生一些事情并且下载停止。可能 ios 关闭了我的后台进程的活动互联网连接。

IOS 6 和 7 中有没有办法在待机期间保持连接处于活动状态?

【问题讨论】:

  • 你在哪里调用这个下载文件的方法?
  • 我在 uibutton 的点击动作函数中调用它
  • 你的意思是你想下载特定按钮动作的文件。您可以通过在 viewDidAppear 中调用它来使其成为后台下载
  • 我必须下载文件,特别是按钮动作,这是一个要求。但是,如果我在 viewDidAppear 中调用 download-function,它会发生什么变化?当应用程序进入后台时,这如何解决我的问题?我不是在问我什么时候应该下载文件,我是在问如果设备进入待机状态如何下载它们。

标签: ios background download connection standby


【解决方案1】:

beginBackgroundTaskWithExpirationHandler 将只允许大约 10 分钟的后台时间来完成长时间运行的进程,例如将大量用户数据保存到磁盘。这不应该用于文件下载,推荐在后台下载文件的方法是使用NSURLSessionNSURLSessionDownloadTask

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多