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

.NET MAUI 8 Android应用重启后AppCompatImageView已释放对象访问错误求助

解决.NET MAUI 8 Android中重启应用后ImageView已释放的问题

以下是针对你遇到的Cannot access a disposed object. Object name: 'AndroidX.AppCompat.Widget.AppCompatImageView'错误的可行解决方案:

  • 检查图片绑定与ViewModel资源管理
    确保ViewModel中没有持有Android原生控件或未正确释放的资源引用。如果图片源使用了Stream或其他非托管资源,要在页面销毁时(比如OnDisappearing)主动释放这些资源,重启应用时重新初始化图片源,避免复用已失效的实例。

  • 调整服务注册生命周期
    尝试将页面和ViewModel的注册从瞬态改为作用域(Scoped),让实例在导航范围内正确管理生命周期,减少残留引用的可能:

    builder.Services.AddScoped<ScanQrPage>();
    builder.Services.AddScoped<ScanQrPageViewModel>();
    
  • 手动管控Image控件的生命周期
    在页面的OnDisappearing方法中清空图片源,避免持有已释放的原生控件引用;在OnAppearing时重新加载资源:

    protected override void OnDisappearing()
    {
        base.OnDisappearing();
        // 替换为你实际的Image控件名称
        imgQrScan.Source = null;
        imgLogo.Source = null;
        imgGuide.Source = null;
    }
    
    protected override void OnAppearing()
    {
        base.OnAppearing();
        // 从ViewModel重新绑定或设置图片源
        imgQrScan.Source = ViewModel.ScanImageSource;
        imgLogo.Source = ViewModel.LogoImageSource;
        imgGuide.Source = ViewModel.GuideImageSource;
    }
    
  • 规范图片加载方式
    所有图片都通过MAUI官方的ImageSource抽象(如FileImageSource、UriImageSource)加载,避免直接操作Android原生的Bitmap或ImageView。如果使用自定义加载逻辑,确保Stream等资源在使用后正确关闭。

  • 升级MAUI 8到最新补丁版
    该错误可能是MAUI 8的已知生命周期管理bug,升级到最新的.NET MAUI 8补丁版本,官方可能已修复此类资源泄漏问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 07:22:36