我用Xcode和Swift制作了一个只有WebView的iOS应用程序。有时网站,由WebView呈现,崩溃。在这种情况下,我想重新加载WebView。
为此,我读到iOS 9中有一个新的触发器,在以下时间调用:
Web视图的Web内容流程终止。
所以我将此函数添加到我的ViewController
文件中:
func webViewWebContentProcessDidTerminate(webView: WKWebView){
print("Reload");
self.webView!.reload();
}
但是当我的网站崩溃时没有任何附加内容,所以我想知道:在哪种情况下调用webViewWebContentProcessDidTerminate?
答案 0 :(得分:3)
kristfal 发现了一些有趣的行为:
如果应用程序在前台运行,则崩溃恢复正常 很好地通过webViewWebContentProcessDidTerminate。它只是重新加载 wkwebview。没有创建新的webview实例,所以不再创建 内存问题(当前实现正在泄漏)。
当应用从后台返回时,它很容易崩溃 没有调用webViewWebContentProcessDidTerminate的webview。该 应用程序将尝试通过重新加载webview进行恢复 applicationDidBecomeActive,但如果它失败(这似乎发生了 大约1/10倍),它会崩溃整个应用程序,以防止获取 卡在一个无限的加载循环中。
来源:https://github.com/Telerik-Verified-Plugins/WKWebView/issues/248#issuecomment-235241805