Cordova iOS 自定义插件:处理内存警告

Posted

技术标签:

【中文标题】Cordova iOS 自定义插件:处理内存警告【英文标题】:Cordova iOS custom Plugin : handle memory warning 【发布时间】:2012-10-26 11:05:53 【问题描述】:

我正在开发一个使用 cordova(2.1) 和一些自定义插件的 ios 应用程序。

我试图面对的问题如下: 当我展示我的插件时(基本上是一个比内置功能更多的相机插件 科尔多瓦插件)有时我会收到内存警告并随后卸载 包含 web 视图的视图。这对我来说是一个非常大的问题,因为一旦我的 imagePicker 关闭 webview 未恢复。

我查看了 CDVCamera 插件源,我注意到的是:

(1)插件保存webview:

 // we need to capture this state for memory warnings that dealloc this object
    cameraPicker.webView = self.webView;

这里我不明白发生了什么,好的我们保存 webview 以防万一记忆 警告它将被卸载,但我无法弄清楚webview在框架中的方式/位置 已恢复。

(2)插件使用了一个名为hasPendingOperation的Bool属性,这个属性如果我理解 当收到内存警告时由 CDVViewController 使用以避免清除内存 如果插件处于活动状态。

我不明白的第一件事是为什么当我的控制器收到内存警告时 超级控制器(CDVViecontroller)没有收到它?

第二个是否可以将 CDVCamera 插件使用的模式与 CDVViewController 结合使用 处理自定义插件中的内存警告?

任何有助于使用cordova管理内存警告以避免webview被卸载的帮助将不胜感激。

【问题讨论】:

删除了我的答案。希望其他人可以帮助您使用该插件。 您能否分享更多有关您为解决此问题所做的工作的信息? 【参考方案1】:

    That was probably a legacy use where we need to keep a reference to the webView to write javascript to it when the picker was dismissed.并不真正需要,因为我们正在使用不同的方式回写 webview:https://github.com/apache/cordova-ios/blob/0a978a6617c58bfa98968e0c6bdcdb4f10f01902/CordovaLib/Classes/CDVCamera.m#L301

    不确定您的意思,CDVViewController 也确实收到内存警告,并查询每个插件的 hasPendingOperation 属性。如果设置为 true,则不会释放插件。请注意,如果内存没有充分释放,iOS 看门狗可能会终止应用程序。

【讨论】:

感谢您的回答,最终我设法使用 hasPendingOperation 属性处理此问题 嗨,在我的应用程序中,我遇到了同样的错误并且应用程序崩溃了。谁能帮我。错误是“收到内存警告”。并且'插件'CDVCamera'有一个挂起的操作,内存清除延迟了didReceiveMemoryWarning。'我在“CDVPlugin.m”文件中将 hasPendingOperation 设置为 true。但我仍然收到警告并崩溃。 github链接返回404,请说明如何解决问题。

以上是关于Cordova iOS 自定义插件:处理内存警告的主要内容,如果未能解决你的问题,请参考以下文章

Cordova自定义插件开发 iOS

Cordova自定义插件开发 iOS

在 iOS 中使用自定义框架的 Cordova 插件错误

如何让 Cordova 通过插件自动嵌入自定义 iOS 框架?

自定义 Cordova 插件 iOS index.js 无法识别我的 .js 文件

ionic cordova build ios 使用 xcode swift 3 框架安装自定义插件失败