我正在使用cordova-plugin-wkwebview-engine插件在Cordova中运行我的html5应用程序。由于WKWebView架构,webview被加载到另一个线程中。现在,当我从Cordova打开另一个线程(EG。使用相机插件拍照)并且iOS在相机视图处于活动状态时发出内存警告时,webview被杀死。
显然WKWebView视图像后台线程一样被处理并被停止。现在,当相机返回时,应用程序为空白(白色屏幕),因为webview不再存在。在UIWebView(由于WKWebView中的更好性能而放弃)在应用程序的主线程上运行,因此永远不会被杀死。
有什么方法可以阻止WKWebView被关闭吗?如果应用程序无法保持主应用程序运行WKWebView对于显示网页叠加层以外的任何内容都是无用的。
答案 0 :(得分:3)
对于WKWebView
的内存管理,看起来还有很多问题,以及一些可能对解决问题有用的iOS 9安全更改。
HERE是Apple支持人员的原因,为什么您的WKWebView返回空白,而不是仅仅崩溃您的应用程序:
虽然可能WKWebView进程可能超出其内存预算,但这样做不会导致您的应用程序被终止,并且最多会导致空白视图。
此外,THIS问题揭示了导致类似问题的NSAppTransportSecurity Protocol
(iOS 9更改)。虽然它与内存无关,但如果您在WKWebView实例中使用非安全URL,则可能值得一试。
如果您在任一请求期间使用 HTTP 网址,则必须包含以下内容:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key><true/>
</dict>
在您的应用程序的.plist
文件中。
如果您仍然无法解决问题,我建议您查看WKWebView,
的铬forum,同时可能会降低质量参数相机插件可以减少内存问题。