2013-04-23 240 views
5

我写了一个Windows 8商店应用程序(XAML/C#),这是我在Microsoft表面上运行的应用程序。该应用程序基本上是一个没有任何保存按钮的数据录入应用程序。当在页面之间跳转或应用程序暂停时,自动执行保存。当Windows 8商店应用程序关闭时保存数据

然而,我似乎无法捕捉的一个senario是当用户关闭应用程序时(当用户从​​屏幕的顶部滑动)。

所以此刻我订阅App.Current.Suspending和呼叫保存在这里:

App.Current.Suspending += Current_Suspending;     

void Current_Suspending(object sender, Windows.ApplicationModel.SuspendingEventArgs e) 
{ 
    Save(); 
} 

这里我也覆盖了即时存档方法和调用保存:

protected override void SaveState(Dictionary<string, object> pageState) 
{ 
    Save(); 
    base.SaveState(pageState); 
} 

但niether这些方法在应用程序关闭时被调用。

有人知道应用程序关闭时会触发的事件吗?

感谢

+0

你使用这个词的“封闭”当你谈论被暂停的应用程序是一个有点混乱。你能否确定暂停事件是否真的发生,如果没有,那么你没有以正确的方式挂钩事件。看起来像这篇文章可能会帮助您以正确的方式执行此操作:http://msdn.microsoft.com/en-us/library/windows/apps/hh986968.aspx – 2013-04-23 11:35:26

+1

挂起事件会在应用程序暂停但关闭时触发它没有。当我说关闭时,我的意思是用户从上到下滑动屏幕(或按Alt-F4) – Sun 2013-04-23 12:46:30

+0

您的暂停事件只发生在应用程序暂停未关闭时。您需要通过处理应用程序关闭时发生的事件来实际处理应用程序。 – 2013-04-23 13:01:38

回答

6

http://msdn.microsoft.com/en-US/library/windows/apps/xaml/hh465115.aspx

在它包含以下注释底部:

有关使用Visual Studio调试注:Visual Studio中阻止Windows暂停附加到调试器的应用程序。这是为了让用户在应用程序运行时查看Visual Studio调试UI。当您调试应用程序时,可以使用Visual Studio向其发送暂停事件。确保显示调试位置工具栏,然后单击暂停图标。

2

我讨厌简单地指向Windows应用商店应用生命周期的文档,但文档非常清晰。当按Alt-F4关闭应用程序时,没有特殊事件可以处理Windows应用商店应用程序只会被暂停或者根本不运行。这意味着您应该经常保存用户的数据和/或提供一种保存这些数据的方法。

没有特别事件表明用户已关闭应用程序。 用户关闭应用程序后,该应用程序暂停,并终止 ,并在约10秒内进入NotRunning状态。如果 一个应用程序已经注册了Suspended |暂停 事件,则在应用程序暂停时调用它。您可以使用此事件 处理程序将相关应用程序和用户数据保存到持久性 存储。

您应该决定您的应用在用户关闭 后如何激活。对于Windows或用户是否终止应用程序 可能没有任何影响。如果您的应用需要在用户关闭时执行 的某些操作,而不是由Windows关闭的 ,则激活事件处理程序可以确定该应用是由用户还是由Windows终止了 。请参阅 ApplicationExecutionState枚举文档中ClosedByUser和Terminated状态的说明 。

应用程序不应该以编程方式自行关闭,除非绝对需要使用 。例如,如果应用程序检测到内存泄漏,它可以自行关闭 以确保用户个人数据的安全。当您以编程方式关闭应用程序时,Windows会将其视为应用程序崩溃。

Source

相关问题