【问题标题】:How to prevent WKWebView from being closed when running Cordova plugin运行 Cordova 插件时如何防止 WKWebView 被关闭
【发布时间】:2015-12-22 11:08:08
【问题描述】:

我正在使用 cordova-plugin-wkwebview-engine 插件在 Cordova 中运行我的 html5 应用程序。由于 WKWebView 架构,webview 在另一个线程中加载。现在,当我从 Cordova 打开另一个线程(例如,使用相机插件拍照)并且 iOS 在相机视图处于活动状态时发出内存警告时,webview 被杀死。

显然 WKWebView 视图像后台线程一样被处理并停止。现在当相机返回时,应用程序是空白的(白屏),因为 web 视图不再存在。在 UIWebView 中(由于 WKWebView 的性能更好,我们放弃了它)在应用程序的主线程上运行,因此从未被杀死。

有什么方法可以防止 WKWebView 被关闭吗?如果应用程序无法保持主应用程序运行,那么 WKWebView 除了显示网页叠加层之外将毫无用处。

【问题讨论】:

标签: ios html cordova cordova-plugins wkwebview


【解决方案1】:

看起来WKWebView 的内存管理仍然存在很多问题,以及一些可能有助于解决您的问题的 iOS 9 安全更改。

HERE 是 Apple 支持人员关于您的 WKWebView 为何返回空白而不是让您的应用程序崩溃的原因:

虽然 WKWebView 进程可能会超出其内存预算,但这样做不会导致您的应用被终止,并且最多会导致空白视图。

此外,THIS 问题揭示了同样导致类似问题的NSAppTransportSecurity Protocol(iOS 9 更改)。虽然它与内存无关,但如果您在任一 WKWebView 实例中使用非安全 URL,则可能值得研究。

如果您在任一请求期间使用 HTTP URL,则必须包括:

<key>NSAppTransportSecurity</key>  
<dict> 
   <key>NSAllowsArbitraryLoads</key><true/>  
</dict> 

在您的应用程序的.plist 文件中。

如果您仍然无法解决问题,我建议您检查 WKWebView, 的铬 forum 并可能降低相机插件的 质量参数 以减少内存问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-10
    • 1970-01-01
    • 2012-11-05
    • 2019-08-26
    • 2014-04-18
    • 1970-01-01
    相关资源
    最近更新 更多