Windows 8商店应用关闭时保存数据

时间:2013-04-23 11:20:18

标签: c# windows-8 windows-store-apps winrt-xaml

我已经编写了一个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);
}

但是当应用程序关闭时,会调用这些方法中的其他方法。

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

由于

2 个答案:

答案 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将此视为应用程序崩溃。

Source