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

.NET MAUI应用仅在One Plus设备出现Window已创建异常求助

针对One Plus设备上.NET MAUI应用“MAUI Window already created”异常的排查方案

1. 加固窗口创建逻辑,避免重复实例化

在App.xaml.cs的CreateWindow方法中添加窗口存在性检查,确保不会重复创建主窗口:

protected override Window CreateWindow(IActivationState activationState)
{
    // 优先返回已存在的主窗口,避免重复创建
    if (Application.Current.Windows.Any(w => w is MainWindow))
    {
        return Application.Current.Windows.First(w => w is MainWindow);
    }
    return new MainWindow();
}

2. 排查One Plus定制系统的特殊设置

One Plus的ColorOS可能存在特殊的后台管理或窗口机制,建议让用户测试以下操作:

  • 关闭应用的「后台冻结」「智能休眠」功能
  • 禁用「平行窗口」「分屏模式」后重新启动应用
  • 关闭「应用分身」(如果开启)

3. 添加异常日志,定位触发场景

在窗口创建逻辑中捕获异常并记录详细上下文,便于复现问题:

protected override Window CreateWindow(IActivationState activationState)
{
    try
    {
        // 记录当前窗口数量、激活状态等关键信息
        System.Diagnostics.Debug.WriteLine($"Window count: {Application.Current.Windows.Count}");
        System.Diagnostics.Debug.WriteLine($"Activation state: {activationState?.ToString() ?? "Null"}");
        
        return new MainWindow();
    }
    catch (Exception ex)
    {
        // 将日志上传到AppCenter或本地存储
        AppCenterLog.Error("WindowCreation", $"Error: {ex.Message}\nStack Trace: {ex.StackTrace}");
        throw;
    }
}

4. 升级MAUI SDK到最新稳定版

检查当前使用的.NET MAUI版本,若不是最新稳定版,尝试升级——官方可能已经修复了与ColorOS的兼容性问题。

5. 测试特定触发场景

在One Plus设备上模拟以下场景,确认是否能复现异常:

  • 后台杀死应用后重新启动
  • 多任务切换时快速唤醒应用
  • 分屏/小窗模式下启动应用

6. 排查代码中的手动窗口创建逻辑

检查应用代码中是否有其他地方(如后台服务、推送回调)手动调用了窗口创建方法,确保只有CreateWindow负责窗口初始化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 08:26:04