.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
相关产品推荐
相关产品推荐

