我已经编写了一个Windows 8商店应用程序(XAML / C#),我在Microsoft表面上运行。该应用程序基本上是一个没有任何保存按钮的数据输入应用程序。在页面间跳转或应用程序暂停时自动执行保存。
然而,我无法理解的一个问题是当用户关闭应用程序时(当用户从屏幕的顶部滑动到底部时)。
所以目前我订阅App.Current.Suspending并在此处调用save:
App.Current.Suspending += Current_Suspending;
void Current_Suspending(object sender, Windows.ApplicationModel.SuspendingEventArgs e)
{
Save();
}
我也覆盖SaveState方法并调用Save here:
protected override void SaveState(Dictionary<string, object> pageState)
{
Save();
base.SaveState(pageState);
}
但是当应用程序关闭时,会调用这些方法中的其他方法。
有人知道应用程序关闭时会被触发的事件吗?
由于
答案 0 :(得分:6)
http://msdn.microsoft.com/en-US/library/windows/apps/xaml/hh465115.aspx
在底部,它包含以下注释:
关于使用Visual Studio进行调试的说明:Visual Studio阻止Windows挂起附加到调试器的应用程序。这是为了允许用户在应用程序运行时查看Visual Studio调试UI。在调试应用程序时,可以使用Visual Studio向其发送暂停事件。确保显示“调试位置”工具栏,然后单击“挂起”图标。
答案 1 :(得分:2)
我讨厌简单地指出Windows应用商店应用程序生命周期中的文档,但文档非常清楚。按ALT-F4关闭应用程序时没有特殊事件处理Windows应用程序假设应用程序仅暂停或根本不运行。这意味着您应该经常处理保存用户的数据和/或提供保存此类数据的方法。
没有特殊事件表明用户已关闭应用。 在用户关闭应用程序后,该应用程序已暂停并且已暂停 终止,在大约10秒内进入NotRunning状态。如果 一个应用程序已经为Suspending |注册了一个事件处理程序暂停 事件,在应用程序暂停时调用它。您可以使用此活动 处理程序将相关应用程序和用户数据保存到持久性 存储
您应该确定应用在应用后的行为方式 由用户关闭。这个应用程序可能对你没有任何影响 被Windows或用户终止。如果你的应用需要做 用户关闭的东西比不同的东西有所不同 由Windows关闭,激活事件处理程序可以确定是否 该应用程序已被用户或Windows终止。请参阅说明 的文档中的ClosedByUser和Terminated状态 ApplicationExecutionState枚举。
应用程序不应以编程方式关闭,除非绝对 必要。例如,如果应用检测到内存泄漏,则可以关闭 本身就是为了确保用户个人数据的安全。当你 以编程方式关闭应用程序,Windows将此视为应用程序崩溃。