2012-10-26 128 views
2

我正在開發使用科爾多瓦(2.1)和一些自定義插件的iOS應用程序。科爾多瓦iOS自定義插件:處理內存警告

,我試圖去面對的問題如下: 當我告訴我的插件(基本上是一個相機插件用得比較多的功能內置 科爾多瓦插件)有時我收到一個內存警告和隨之而來的卸載包含webview的 視圖。這對我來說是一個非常大的問題,因爲一旦我的imagePicker 被解僱,webview不會被恢復。

我看看CDVCamera插件的源和我注意到的是:

(1)插件保存的網頁流量:

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

這裏我不明白這是怎麼回事,好吧,我們保存webview以防內存 警告它將被卸載,但我無法弄清楚在框架中如何/在哪裏恢復webview 。

(2)插件使用布爾屬性稱爲hasPendingOperation,這個屬性如果我理解 使用由CDVViewController當接收到存儲器的警告,以避免吹掃存儲器 如果一個插件是活動的。

我不明白的第一件事是以下爲什麼當我的控制器收到內存警告 超級控制器(CDVViecontroller)沒有收到它?

其次,是否可以將CDVCamera插件使用的模式與CDVViewController 一起應用來處理自定義插件中的內存警告?

任何幫助管理與科爾多瓦的內存警告,以避免webview被卸載,將不勝感激。

+0

刪除我的答案。希望別人可以幫助你的插件。 –

+0

您可以分享有關解決此問題的更多信息嗎? – sanpaco

回答

1
  1. 這可能是一個傳統的使用,我們需要保持對webView的引用,以便在拾取器被解僱時將javascript寫入它。不是真的需要,因爲我們使用的是不同的方式寫回的WebView:https://github.com/apache/cordova-ios/blob/0a978a6617c58bfa98968e0c6bdcdb4f10f01902/CordovaLib/Classes/CDVCamera.m#L301

  2. 不知道你的意思,在CDVViewController確實接收到內存警告以及和查詢每個插件的hasPendingOperation財產。如果它設置爲true,則該插件不會被釋放。請注意,如果內存釋放不足,iOS監視程序可能會終止應用程序。

+0

感謝您的回答,在ened我設法處理這個使用hasPendingOperation屬性 –

+0

嗨,在我的應用程序,我得到相同的錯誤和應用程序崩潰。誰能幫我。錯誤是「收到內存警告」。和'插件'CDVCamera'有一個掛起的操作,內存清除延遲了didReceiveMemoryWarning。'我在'CDVPlugin.m'文件中設置了hasPendingOperation爲true。但我仍然得到警告並且崩潰。 –

+0

github鏈接返回404。請解釋如何解決問題。 – sanpaco

相關問題