什么操作触发webViewWebContentProcessDidTerminate函数

时间:2016-08-19 13:05:58

标签: ios swift webview webkit

我用Xcode和Swift制作了一个只有WebView的iOS应用程序。有时网站,由WebView呈现,崩溃。在这种情况下,我想重新加载WebView。

为此,我读到iOS 9中有一个新的触发器,在以下时间调用:

  

Web视图的Web内容流程终止。

来源:iOS Developer Library

所以我将此函数添加到我的ViewController文件中:

func webViewWebContentProcessDidTerminate(webView: WKWebView){
    print("Reload");
    self.webView!.reload();
}

但是当我的网站崩溃时没有任何附加内容,所以我想知道:在哪种情况下调用webViewWebContentProcessDidTerminate?

1 个答案:

答案 0 :(得分:3)

kristfal 发现了一些有趣的行为:

  

如果应用程序在前台运行,则崩溃恢复正常   很好地通过webViewWebContentProcessDidTerminate。它只是重新加载   wkwebview。没有创建新的webview实例,所以不再创建   内存问题(当前实现正在泄漏)。

     

当应用从后台返回时,它很容易崩溃   没有调用webViewWebContentProcessDidTerminate的webview。该   应用程序将尝试通过重新加载webview进行恢复   applicationDidBecomeActive,但如果它失败(这似乎发生了   大约1/10倍),它会崩溃整个应用程序,以防止获取   卡在一个无限的加载循环中。

来源:https://github.com/Telerik-Verified-Plugins/WKWebView/issues/248#issuecomment-235241805