如何保存我的状态在Windows商店应用程序

本文关键字:Windows 应用程序 状态 我的 何保存 保存 | 更新日期: 2023-09-27 18:06:27

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

我在事件OnSuspending中保存我的数据。

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

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

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

如何保存我的状态在Windows商店应用程序

当你关闭并启动你的应用程序之前10秒过去了,它的另一个实例被创建和前一个不运行OnSuspending事件(这是奇怪的,因为这意味着异步操作像这个事件可以结束或永远不会开始没有警告我们)。我觉得这很烦人但用户为什么要这么做呢?大多数情况下,用户"重新启动"你的应用程序,因为它崩溃了,或者他被卡住了,无法回到主页面。你应该尽量防止这种情况发生,因为这种情况很少发生。

然而,这也可能发生,因为用户忘记做某事,想要再次启动应用程序。为了防止丢失的用户数据,我保存最重要的数据,只要我有机会,保存剩下的只有OnSuspending方法。你需要考虑哪些数据丢失会让你的用户感到不安。

我认为微软应该找到一种更好的方法来保存应用程序状态。我搜索了很多关于这个问题,没有找到一个解释,所以现在我将继续做我上面说的。我希望你提出的这个问题能帮助我弄清这个在我看来很奇怪的案子。

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.Closed ByUser)"。