我正在调用一些代码来查询和更新CallKit调用扩展,偶尔我会看到挂起,调用超时.我想我应该把它从主线程上移开,这样它就不会阻塞UI,但实际上情况并非如此吗?
用户界面被阻塞了,我不知道是下面这段代码,还是别的什么.
以下是查询函数:
private func queryCallExtensionStatusWithDispatchGroup() {
let dg = DispatchGroup()
dg.enter()
self.doQueryCallExtensionStatusWithDispatchGroup(dispatchGroup: dg)
Logger.trace(TAG + "queryCallExtensionStatusWithDispatchGroup() WAITING .... ")
let dispatchTimeoutResult = dg.wait(timeout: DispatchTime.now() + DispatchTimeInterval.seconds(30))
if dispatchTimeoutResult == .timedOut {
Logger.info(TAG + "queryCallExtensionStatusWithDispatchGroup() TIMED OUT")
} else {
Logger.trace(TAG + "queryCallExtensionStatusWithDispatchGroup() LEFT")
}
}
private func doQueryCallExtensionStatusWithDispatchGroup(dispatchGroup:DispatchGroup) {
<snip>
dispatchGroup.leave()
}
以及它的调用:
private let callExtensionQueue = DispatchQueue(label: "com.appname.serialQueue")
...
callExtensionQueue.async {
self!.queryCallExtensionStatusWithDispatchGroup()
}