在 Xamarin 中处理 WKWebView

Disposing a WKWebView in Xamarin

我想知道如何正确处理 webview,以便在任何给定时间您只有一个实例?目前,每次我打开一个 webview 时,我都可以在我的 chrome 调试工具中看到它。除了这会耗尽内存之外,这还会导致 webview 显示内容不正确的问题,因为它似乎试图一个接一个地加载,直到它最终到达它拥有的最终 webview。

我试过这样处理它:

protected override void Dispose(bool disposing) {
            webView.Dispose();

            webView = null;
            base.Dispose(disposing);
        }

当然,考虑到我的问题,似乎没有用。我的 webview 位于 UIViewController 内部,而 UIViewController 本身位于另一个内部。我对 dispose 的理解是,一旦 UIViewController 不再显示在屏幕上,就应该在其上调用 dispose 方法(理论上)。

为什么要手动释放webView?从这个 documentation,我们知道对于 UIViewController,如果它从导航堆栈中弹出,并且该对象持有的任何托管对象引用也将被释放或释放。 Dispose 方法将被自动调用,它的所有子视图也将被释放。无需在 Dispose(bool disposing) 中手动调用它。

My webview sits inside of a UIViewController which in itself is sitting inside of another one.

您的意思是 UIViewController 可能包含多个 webView,并且您想在某个时间发布一个?尝试:

webView.RemoveFromSuperview();
webView = null;