【发布时间】:2015-10-27 14:49:27
【问题描述】:
我不明白以下内容,希望有些人明白:-)
我正在从一个 url 下载一个文件(下载时间为 10 分钟),下载完成后效果很好。
但是: 当我在一分钟后模拟崩溃或互联网中断并再次重新启动应用程序时,它的行为对我来说很奇怪。 在这种情况下,当重新启动我的应用程序以使用相同的 sessionid 再次下载时,似乎 2 个下载任务正在并行工作。我通过从 10% 到 0% 并返回的跳跃进度条来识别这一点。一个,从头开始,一个,我猜是旧的转移。 (没有把握)。我可以重新启动,然后队列中还有一个。
有人可以确认这种行为吗?有人知道我该怎么做: - 仅继续中断的下载任务(首选:-)) - 或者我怎样才能从头开始。
这是我的下载代码,它可以正常工作而没有任何中断。
func download_file(sURL: String, sToLocation: String) {
println("start downloading ...");
println("sURL : " + sURL + " sToLocation : " + sToLocation);
bytesDownloaded=0;
var delegate = self;
delegate.storePath=sToLocation;
delegate.progressView=progressView;
struct SessionProperties {
static let identifier : String! = "url_session_background_download"
}
var configuration = NSURLSessionConfiguration.backgroundSessionConfigurationWithIdentifier(SessionProperties.identifier)
var backgroundSession = NSURLSession(configuration: configuration, delegate: delegate, delegateQueue: nil)
//myURLSession = NSURLSession(configuration: configuration, delegate: delegate, delegateQueue: nil)
var url = NSURLRequest(URL: NSURL(string: sURL)!)
var downloadTask = backgroundSession.downloadTaskWithRequest(url)
//downloadTask.cancel()
downloadTask.resume()
}
更新 当我使用不同的 sessionid 时,下载从头开始。之前启动的下载任务仍在后台运行。所以我想知道为什么我不能通过使用旧的 sessionid 来恢复以前的下载任务而不并行开始新的下载?
【问题讨论】:
标签: ios swift download background nsurlsession