2

cordova(2.1) といくつかのカスタム プラグインを使用する iOS アプリを開発しています。

私が直面しようとしている問題は次のとおりです: プラグイン (基本的には、組み込みのコルドバ プラグインよりも多くの機能を備えたカメラ プラグイン) を表示すると、メモリ警告が表示され、その結果、webview を含むビューがアンロードされることがあります。 . 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)がそれを受け取らないのはなぜですか?

次に、カスタム プラグインでメモリ警告を処理するために、CDVViewController と組み合わせて CDVCamera プラグインで使用されるパターンを適用することは可能ですか?

WebView がアンロードされるのを避けるために、cordova でメモリ警告を管理するのに役立ちます。

4

1 に答える 1

1
  1. これはおそらく、ピッカーが閉じられたときに webView への参照を保持して javascript を書き込む必要がある従来の使用法でした。別の方法で webview に書き戻すため、実際には必要ありません: https://github.com/apache/cordova-ios/blob/0a978a6617c58bfa98968e0c6bdcdb4f10f01902/CordovaLib/Classes/CDVCamera.m#L301

  2. 意味がわかりませんが、CDVViewController はメモリ警告も受け取り、各プラグインの hasPendingOperation プロパティを照会します。true に設定されている場合、プラグインは割り当て解除されません。メモリが十分に解放されていない場合、iOS ウォッチドッグがアプリを強制終了する可能性があることに注意してください。

于 2012-11-06T06:27:04.767 に答える