.NET MAUI 应用程序在后台处理共享文件时出现问题

问题描述 投票:0回答:1

我正在开发 .NET MAUI 应用程序,并且遇到了与文件共享相关的问题。我的应用程序旨在处理来自其他应用程序或来源的共享文件。但是,在特定情况下,我遇到了 System.InvalidOperationException: 'Window was already Created' 错误。

这是我观察到的行为:

当应用程序在后台运行并且我尝试向其共享文件时,一切正常。 但是,如果应用程序已打开并在前台运行,则尝试共享文件会导致上述异常。 该应用程序似乎正在尝试在现有窗口上创建一个新窗口,这是不允许的。仅当应用程序处于活动状态时才会出现此问题;如果我从后台关闭应用程序然后共享文件,它会恢复并正确处理共享意图。

我正在寻找一种方法来检查应用程序是否已打开,如果是,则正确处理传入的共享意图而不引起异常。理想情况下,应用程序应该能够管理共享文件,无论它是在前台还是后台。

还有其他人在 .NET MAUI 应用程序中遇到过类似的问题吗?任何有关如何解决此问题的建议将不胜感激。

谢谢!

我尝试过的:我有一个应用程序可以处理来自其他应用程序或来源的文件共享。当应用程序在后台运行并且我向其共享文件时,它工作正常。但是,如果应用程序已打开,则共享文件会导致 System.InvalidOperationException:“窗口已创建”错误。

我的期望:我期望应用程序能够无缝处理共享文件,无论是在前台还是后台,都不会抛出任何异常。

c# maui
1个回答
0
投票

您可以尝试将MainActivity的启动模式设置为

SingleTask
SingleTop
。如:

 [Activity(Theme = "@style/Maui.SplashTheme",LaunchMode = LaunchMode.SingleTask,

默认模式为

Standard
:

系统在启动该活动的任务中创建一个新的活动实例,并将意图路由到该实例。 Activity可以被实例化多次,每个实例可以属于不同的任务,一个任务可以有多个实例。

如果使用 SingleTask 模式,可以重写 MainActivityOnNewIntent 方法:

protected override void OnNewIntent(Intent? intent)
 {
     base.OnNewIntent(intent);
     Intent = intent;
 }
© www.soinside.com 2019 - 2024. All rights reserved.