代码之家  ›  专栏  ›  技术社区  ›  SomeStudent

在Xamarin中处理WKWebView

  •  1
  • SomeStudent  · 技术社区  · 6 年前

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

    我试着这样处理它:

    protected override void Dispose(bool disposing) {
                webView.Dispose();
    
                webView = null;
                base.Dispose(disposing);
            }
    

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

    1 回复  |  直到 6 年前
        1
  •  3
  •   Ax1le    6 年前

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

    我的webview位于UIViewController内部,其本身就是 坐在另一个里面。

    你是说 UIViewController 可能包含多个Web视图,您想在某个时间发布一个吗?尝试:

    webView.RemoveFromSuperview();
    webView = null;