You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xamarin Forms仅Android端WebView返回后导航崩溃求助

问题排查:Xamarin Forms WebView返回后导航崩溃(InflateException)

问题重现步骤

  • 导航至包含WebView组件的子菜单页面
  • 返回上一页(操作成功)
  • 尝试导航至任意菜单项,应用崩溃,抛出Android.Views.InflateException,提示无法解析索引37的属性

核心排查方向

1. WebView资源未正确释放

Xamarin Forms的WebView在Android平台依赖原生Android.Webkit.WebView,返回页面时若未清理资源,会引发后续视图渲染冲突:

  • 在WebView页面的OnDisappearing方法中手动释放资源:
    protected override void OnDisappearing()
    {
        webView.Source = null;
        webView.Dispose();
        base.OnDisappearing();
    }
    
  • 若使用绑定的Source属性,页面销毁时需解除绑定,避免内存泄漏

2. Android主题与WebView兼容性问题

InflateException多与主题资源解析失败相关,检查styles.xml:

  • 确认应用主题继承自Theme.MaterialComponents.DayNight.NoActionBar等Xamarin Forms兼容主题,避免使用过时的Theme.AppCompat系列
  • 通过Android Studio资源索引工具,定位索引37对应的属性,排查是否存在自定义属性未正确定义

3. AndroidManifest配置检查

  • 确认添加WebView所需权限:
    <uses-permission android:name="android.permission.INTERNET" />
    
  • 检查硬件加速设置,部分设备上硬件加速会导致WebView销毁后残留资源:
    <application android:hardwareAccelerated="true">
        <activity android:hardwareAccelerated="true" ... />
    </application>
    

4. AppShell导航逻辑冲突

  • 验证含WebView页面的路由是否正确注册,确认返回操作触发了页面销毁而非隐藏
  • 尝试关闭导航动画,避免渲染冲突:
    await Shell.Current.GoToAsync("//TargetPage", animate: false);
    

5. Xamarin Forms版本兼容问题

当前使用的v5.0.0.2662存在已知WebView内存泄漏问题,可尝试升级至5.x最新稳定版,或降级至5.0.0.2515版本(该版本修复了部分WebView返回崩溃问题)

异常栈分析提示

从完整异常栈中定位具体布局文件及索引37对应的资源,若指向WebView的布局渲染,即可确认是WebView销毁后残留的原生视图导致Inflate失败

内容的提问来源于stack exchange,提问作者pac

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 07:28:10