5

我在将状态保存到本地设置时遇到了一点问题。alt除了有人使用+关闭我的应用程序f4并在 10 秒前打开它(10 秒后应用程序处于挂起状态并保存数据)的情况外,一切都很好。(技术xaml/c#)

我将数据保存在 event 中OnSuspending

我在这样的事件中加载我的数据OnLaunched

if (args.PreviousExecutionState == ApplicationExecutionState.Terminated ||
args.PreviousExecutionState == ApplicationExecutionState.ClosedByUser)
{
  // save data
}

如何处理这种情况?我知道每次更改状态时我都可以保存状态,但我认为在我的应用程序中这不是一个好主意。感谢帮助 !

4

2 回答 2

2

当您在 10 秒前关闭并启动应用程序时,会创建另一个实例,而前一个实例不会运行OnSuspending事件(这很奇怪,因为这意味着像此事件这样的异步操作可以在没有警告我们的情况下结束或永远不会开始)。我认为这很烦人,但您的用户为什么要这样做呢?大多数情况下,用户“重新启动”您的应用程序是因为它崩溃了,或者他被卡住了,无法返回主页。你应该尽量避免这些情况,这样的想法很少会发生。

但是,这也可能发生,因为用户忘记做某事并想再次启动应用程序。为了防止丢失用户数据,我一有机会就保存最重要的数据并保存其余的唯一OnSuspending方法。您需要考虑丢失时哪些数据会让您的用户感到不安。

我认为微软应该有更好的方法来保存应用程序状态。我对这个问题进行了很多搜索,但没有找到解释,所以现在我将继续按照上面所说的进行。我希望你提出的这个问题可以帮助我澄清这个,在我看来,奇怪的情况。

于 2013-03-28T20:42:40.603 回答
0
onLaunched :
    CoreWindow.GetForCurrentThread().Activated += App_Activated;
and event:  
void App_Activated(CoreWindow sender, WindowActivatedEventArgs args)
        {



               if (args.WindowActivationState == CoreWindowActivationState.Deactivated)
               {
               //save Data
               }
       }

加载数据时,删除: if (args.PreviousExecutionState == ApplicationExecutionState.Terminated || args.PreviousExecutionState == ApplicationExecutionState.ClosedByUser)`。有用 !

于 2013-04-01T18:51:24.173 回答