我的UWP应用程序未触发OnSuspending事件,但此问题仅发生在运行Windows 10的Windows Phone上。在我的本地计算机或模拟器上将其作为Windows应用商店应用运行时,它可以正常工作。
我正在使用此活动在应用关闭时保存我的应用设置,但这显然会导致Windows手机出现严重问题,因为此事件未触发。
如您所见,OnSuspending事件在应用启动时初始化
public App()
{
Microsoft.ApplicationInsights.WindowsAppInitializer.InitializeAsync(
Microsoft.ApplicationInsights.WindowsCollectors.Metadata |
Microsoft.ApplicationInsights.WindowsCollectors.Session);
this.InitializeComponent();
this.Suspending += OnSuspending;
}
以下是在Windows Phone 10中运行时应该调用的OnSuspending代码,但不是。
private async void OnSuspending(object sender, SuspendingEventArgs e)
{
var deferral = e.SuspendingOperation.GetDeferral();
//TODO: Save application state and stop any background activity
await Locator.MainPageViewModel.SaveSettings();
deferral.Complete();
}
关于如何解决这个问题的任何想法,还是有潜在的解决方法?
感谢。
UPDATE-1:
当我通过按住标志键并单击十字架以终止它来终止我的应用程序时,关闭应用程序但它仍然没有触发OnSuspending事件,但.net IDE仍然运行。当我按F5再次运行应用程序时,它会触发OnSuspending事件。我的应用程序启动但代码停止在IDE中运行。
答案 0 :(得分:11)
来自官方App lifecycle documentation:
有关使用Visual Studio进行调试的说明:Visual Studio阻止Windows挂起附加到调试器的应用程序。这是为了允许用户在应用程序运行时查看Visual Studio调试UI。在调试应用程序时,可以使用Visual Studio向其发送暂停事件。确保显示“调试位置”工具栏,然后单击“挂起”图标。
这意味着当您附加到Visual Studio调试器时,OnSuspending
事件不会被触发。如果要调试它,请通过选择相应的生命周期事件手动发送事件。