我有UIWebView,仅创建它并加载url,但是未将此WebView分配给任何视图。我使用Timer从UIWebView每5秒获取HTML内容。直到我不在后台播放音频之前,这项工作都可以正常进行。当音频在后台播放时,从UIWebView获取HTML内容需要花费一些时间,并且我的UI冻结了4到5秒钟,而连续获取HTML的调用导致应用程序无响应。
当音频在后台播放时,UI冻结,并从WebView获取HTML内容。连屏幕上的按钮都无法按。
我正在使用RadioKit库播放音频。
1)我在全局队列上尝试了AVPlayer play()。
2)在AppDelegate中加载WebView。
3)调用WebView委托方法-webViewDidFinishLoad()并在那里获取HTML。
4)在AppDelegate中获取HTML内容,并在获取HTML内容后进行通知。
let webView = UIWebView()
//Load URL request.
if let url = URL(string: "Some string here") {
let urlRequest = URLRequest(url: url)
self.webView.loadRequest(urlRequest)
}
webView.delegate = self
//WebView Delegate
func webViewDidFinishLoad(_ webView: UIWebView) {
self.loadWebpageTimer = Timer.scheduledTimer(timeInterval: 10.0, target: self, selector: #selector(self.loadWebPage), userInfo: nil, repeats: true)
}
//loadWebPage
@objc func loadWebPage(){
DispatchQueue.main.async {
self.interfaceType = self.webView.stringByEvaluatingJavaScript(from: "document.getElementById('Interface_Type').value")
NotificationCenter.default.post(name: NSNotification.Name("WebViewUpdate"), object: nil, userInfo: nil)
}
//In Other view for update the UI add observer
当音频在后台播放时,UI冻结,并从WebView获取HTML内容。当我从WebView获得HTML表单时,我不希望UI冻结。
谢谢。