当AVPlayer在后台播放音频时,UI冻结

时间:2019-10-31 15:19:30

标签: swift webview avplayer

我有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冻结。

谢谢。

0 个答案:

没有答案