NSURLSession在暂停状态下显示任务?

时间:2015-12-23 15:45:34

标签: ios swift nsurlsession nsurlsessiondatatask

我知道在NSURLSession上调用getTasksWithCompletionHandler

  

异步调用包含所有未完成数据的完成回调,   上传,并在会话中下载任务。

但是,从实验中,我可以看到该方法返回的数据,上传和下载任务数组;

func getTasksWithCompletionHandler(_ completionHandler: ([NSURLSessionDataTask], [NSURLSessionUploadTask], [NSURLSessionDownloadTask]) -> Void)

实际上只显示正在执行的任务。即,已收到resume()的任务。

通过在Playground中粘贴此代码可以看到这一点:

import UIKit
import XCPlayground

XCPlaygroundPage.currentPage.needsIndefiniteExecution = true

let config = NSURLSessionConfiguration.defaultSessionConfiguration()
let session = NSURLSession(configuration: config)
let url = NSURL(string: "http://jsonplaceholder.typicode.com")
let request: NSURLRequest = NSURLRequest(URL: url!)
let task : NSURLSessionDataTask = session.dataTaskWithRequest(request, completionHandler: {(data, response, error) in
    NSLog("Done")
})

session.getAllTasksWithCompletionHandler { (tasks:[NSURLSessionTask]) -> Void in
    NSLog("\(tasks)")
    XCPlaygroundPage.currentPage.finishExecution()
}

//task.resume()

请注意,getTasksWithCompletionHandlergetAllTasksWithCompletionHandler - 后者在iOS 9中发布 - 似乎只在完成闭包的签名上有所不同。

另外,有点诱人的是,NSURLSessionTask有一个state属性NSURLSessionTaskState,它为我们RunningSuspendedCanceling,{{1 }}

有没有办法访问非执行任务列表;那些已经被Completed但尚未恢复的人?

0 个答案:

没有答案