Android 上的 Xamarin WebView 显示多个实例

Posted

技术标签:

【中文标题】Android 上的 Xamarin WebView 显示多个实例【英文标题】:Xamarin WebView on Android showing multiple instances 【发布时间】:2015-11-24 10:39:19 【问题描述】:

我使用 Xamarin.Forms 创建了一个混合应用程序。它使用多个 WebViews (XLabs HybridWebViews)。我在 ios 上使用相同的应用程序,它运行良好,而在 android 上它逐渐变慢。当我在设备上执行 chrome://inspect 时,它会显示同一页面的多个 WebView,看起来更像是隐藏的 WebView 仍在内存中并且正在减慢应用程序的速度。

如何销毁 Android 上隐藏的 WebView 实例?

以下是 App 上 chrome://inspect 的截图:

【问题讨论】:

你在 ListView 中使用它们吗? 您能否尝试 NuGet 的最新预发布版本,看看是否存在相同的问题?参考中的更改可能会解决此问题。如果这不能解决问题,请将其提交到 GitHub 问题:github.com/XLabs/Xamarin-Forms-Labs/issues 【参考方案1】:

通常你应该:

将您的 WebViews 实例设置为 null。 (可选)使用GC.Collect(); 强制进行垃圾收集

如果还不够,请为您的 WebView 制作一个自定义渲染器并添加以下内容:

protected override void Dispose(bool disposing)

    if (disposing && Element != null)
    
        if (Control != null)
        
                Control.StopLoading();
                Control.ClearHistory();
                Control.ClearCache(false);
                Control.LoadUrl("about:blank");
                Control.FreeMemory();
                Control.PauseTimers();
        
    

    base.Dispose(disposing);

它应该可以解决您的问题。

【讨论】:

如果信息有用,请将其标记为正确答案。谢谢。

以上是关于Android 上的 Xamarin WebView 显示多个实例的主要内容,如果未能解决你的问题,请参考以下文章

Android 上的 Xamarin.Forms ListView OutOfMemoryError 异常

“ResolveLibraryProjectImports”任务意外失败。 Mac 上的 Xamarin.Android

Android 上的 Xamarin WebView 显示多个实例

Xamarin.Forms 中 TabbedPage 上的 Android.Views.InflateException

使用 xamarin 表单删除 Android 上的顶部栏

Xamarin - 遍历 Android 设备上的所有音频文件