【问题标题】:Save data when Windows 8 Store app closesWindows 8 应用商店应用关闭时保存数据
【发布时间】:2013-04-16 14:09:21
【问题描述】:

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

但是我似乎无法捕捉到的一个场景是用户关闭应用程序时(当用户从​​屏幕的顶部滑动到底部时)。

所以目前我订阅了 App.Current.Suspending 并在此处调用 save:

App.Current.Suspending += Current_Suspending;                  

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

我还重写了 SaveState 方法并在此处调用 Save:

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

但是当应用程序关闭时,这些方法都不会被调用。

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

谢谢

【问题讨论】:

  • 您在谈论应用程序被暂停时使用“关闭”一词有点令人困惑。你能确定 Suspending 事件是否真的发生,如果没有,那么你没有以正确的方式连接到事件中。似乎这篇文章可能会帮助您以正确的方式做到这一点:msdn.microsoft.com/en-us/library/windows/apps/hh986968.aspx
  • 应用程序暂停时会触发暂停事件,但关闭时不会触发。当我说关闭时,我的意思是用户正在从上到下滑动屏幕(或按 Alt-F4)
  • 您的暂停事件仅在应用程序暂停而不是关闭时发生。您需要通过处理应用程序关闭时发生的事件来处理实际永久关闭的应用程序。
  • 我调查了这个问题,没有。

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


【解决方案1】:

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 Store 应用程序假定只是暂停或根本不运行。这意味着您应该经常处理保存用户数据和/或提供保存此类数据的方法。

    没有表明用户关闭应用的特殊事件。 用户关闭应用程序后,它会被暂停并 终止,在大约 10 秒内进入 NotRunning 状态。如果 一个应用程序已经为 Suspending | 注册了一个事件处理程序。暂停 事件,当应用程序暂停时调用。您可以使用此活动 处理程序将相关的应用程序和用户数据保存到持久化 存储。

    您应该决定应用在被激活后的行为方式 被用户关闭。应用程序是否对您没有影响 由 Windows 或用户终止。如果您的应用需要做 用户关闭时与关闭时有所不同 由 Windows 关闭,激活事件处理程序可以确定是否 该应用程序已被用户或 Windows 终止。查看说明 文档中的 ClosedByUser 和 Terminated 状态 ApplicationExecutionState 枚举。

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

    Source

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-01
      • 1970-01-01
      • 2014-01-06
      • 1970-01-01
      • 2012-12-08
      相关资源
      最近更新 更多