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

2024-05-26

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

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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Cordova iOS 自定义插件:处理内存警告 的相关文章

随机推荐