downloadTask
1,urlSession的didReceiveChallenge
2,didWriteData 保存到tmp下
3,didFinishDownloadingToUrl,從傳入的destination block得到download目錄,
將tmp移到download下
4,didCompleteWithError, 返回download路徑
dataTaskWithRequest
1,urlSession的didReceiveChallenge
2,didReceiveData,保存到mutableData
3,didCompleteWithError,返回mutableData序列化對象
downloadTaskWithResumeData
1,urlSession的didReceiveChallenge
2,didiResumeAtOffset
3,didWriteData 保存到tmp下
4,didFinishDownloadingToUrl,從傳入的destination block得到download目錄,
將tmp移到download下
5,didCompleteWithError, 返回download路徑;
如果發生錯誤,則返回空的download路徑 因為沒有到第4步didFinishDownloadingToUrl這一步
取消當前下載任務
NSURLSessionDownloadTask:
cancelByProducingResumeData (這種方式, 可以用downloadTaskWithResumeData續傳,流程如上面didiResumeAtOffset)
cancel
1,didCompleteWithError
取消session下面的所有task的下載任務
這種情況下session就不再可用了, AFURLSessionMananger需要重新創建。
NSURLSession :
invalidateAndCancel
finishTasksAndInvalidate
1,didCompleteWithError
暫停當前下載任務
NSURLSessionDownloadTask:
suspend
(可以用resume 繼續下載
1,didWriteData 從這繼續
)