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

MvvmCross升级至8.x版本后应用卡在SplashScreen启动页如何解决

问题原因&解决思路

  1. 自定义导航服务初始化逻辑错误
    你重写的InitializeNavigationService方法完全跳过了基类实现,且存在两处错误:
    • 不需要手动注册IMvxViewModelLoader和ViewDispatcher,这两个实例基类会自动完成注册,重复/错误注册会导致IoC容器冲突
    • 你的自定义DeepNavigationService构造第一个参数传入了null,MvvmCross 8.x的导航服务要求传入有效的IMvxIoCProvider实例,你直接传空会导致导航服务初始化失败,无法执行启动路由
      修正后的InitializeNavigationService参考:
    protected override IMvxNavigationService InitializeNavigationService(IMvxIoCProvider iocProvider)
    {
        // 先调用基类基础初始化
        base.InitializeNavigationService(iocProvider);
        var loader = CreateViewModelLoader(iocProvider);
        var dispatcher = CreateViewDispatcher();
        // 构造时传入iocProvider而不是null
        var navigationService = new DeepNavigationService(iocProvider, loader, dispatcher, iocProvider);
        Mvx.IoCProvider.RegisterSingleton<IMvxNavigationService>(navigationService);
        return navigationService;
    }
    
  2. 自定义AppStart注册顺序错误
    确认App.Initialize方法中,RegisterCustomAppStart<AppStart>()是在所有依赖服务(包括StartupViewModel依赖的所有服务)注册完成后再调用,如果服务未注册就触发导航,会导致IoC解析失败卡住启动流程。
  3. 查看日志排查具体错误
    你已经配置了Serilog日志,将最低日志级别调整为Verbose,运行应用后查看Debug输出的日志,定位具体的异常信息:大概率是IoC解析失败、服务依赖缺失、导航服务初始化异常三类问题,日志会明确给出错误的类和原因。
  4. 检查SplashScreen实现
    确认Android端的SplashActivity继承自MvxSplashScreenAppCompatActivity,且OnCreate方法中正确调用了基类方法,没有自定义逻辑阻塞MvvmCross的初始化流程。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 06:39:02