ios - Cordova iOS 自定义插件 : handle memory warning

标签 ios cordova didreceivememorywarning viewdidunload

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

我要面对的问题如下: 当我展示我的插件时(基本上是一个比内置功能更多的相机插件 cordova 插件)有时我会收到内存警告并随后卸载 包含 WebView 的 View 。这对我来说是一个非常大的问题,因为一旦我的 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 使用 如果插件处于事件状态。

我不明白的第一件事是为什么当我的 Controller 收到内存警告时 super Controller (CDVViecontroller)没有收到?

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

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

最佳答案

  1. 这可能是一种遗留用途,我们需要保留对 webView 的引用,以便在选择器被关闭时向其写入 javascript。不是真的需要,因为我们使用不同的方式写回 webview:https://github.com/apache/cordova-ios/blob/0a978a6617c58bfa98968e0c6bdcdb4f10f01902/CordovaLib/Classes/CDVCamera.m#L301

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

关于ios - Cordova iOS 自定义插件 : handle memory warning,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13085761/

相关文章:

ios - SFSafariViewController : how to provide custom activities?

ios - 使用 NSPredicate 的变量格式化异常

ios - 无法构建 kudan iOS unity3d 项目

javascript - 当位置模式设置为 "Device only"时,总是达到有关地理位置的超时

Ios确实收到内存警告和应用程序崩溃

ios - 在真实 ios 设备上测试时, ionic 推送通知错误 500

cordova - InAppBrowser 仅在我的域已打开时允许导航

android - Cordova - 由于联系人许可,Android 应用程序在启动时崩溃

ios - 忽略IOS中的didReceiveMemoryWarning

objective-c - UITableViewCell<MFMailComposeViewControllerDelegate> 崩溃 didReceiveMemoryWarning