首先,如果您认为我的问题很愚蠢,我想说声抱歉,我是 iOS 和多线程的新手,只想了解事情的进展。据我所知didEnterBackground
,这是 iOS 在应用程序暂停之前调用的最后一个函数,应用程序有大约 5 秒的时间从它返回,否则 iOS 将终止应用程序。我目前正在考虑这种情况 - 我有一些任务正在后台线程(例如网络下载)上发生,它的完成块发生在主线程上。像这样
fun downloadData() {
Downloader.download(url: "someUrl") { [weak self] in // download is on the background thread
DispatchQueue.main.async { [weak self] in // switch to main
// do some stuff
}
}
}
downloadData()
当前正在后台线程上运行,用户点击主页按钮,应用程序进入后台并被didEnterBackground
调用。而主线程在didEnterBackground
downloadData
完成下载时执行代码并调用它的完成并将新任务推入主线程队列。那么在这种情况下会发生什么?由于 from 的代码didEnterBackground
是在暂停之前可以执行的最后一个代码,所以它的完成块会发生什么downloadData
,它是否也会在暂停之前(之后didEnterBackground
)执行,或者一旦用户返回应用程序就会执行,或者它会被丢弃吗?或者这种情况根本不可能?感谢您的帮助,如果我的问题不正确,再次抱歉。