2013-03-28 69 views
5

将我的状态保存为本地设置时遇到了一些问题。一切都只是情况确定,当有人使用ALT + F4 关闭我的应用程序并打开它10秒结束前(10秒后的应用是在暂停状态和数据被保存)。 (技术XAML/C#)如何在Windows Store应用程序中保存我的状态?

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

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

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

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

回答

2

当您关闭并启动应用程序之前的10秒钟以后创建它的另一个实例,前一个不运行OnSuspending事件(很奇怪,因为这意味着这样的事件的异步操作可以结束或者从来没有开始,而不警告我们)。我认为这很烦人,但为什么你的用户会这样做?大多数情况下,用户会“重新启动”应用程序,因为它崩溃或卡住,无法返回主页面。你应该尝试阻止这种情况,而这种想法很少会发生。

但是,这也有可能发生,因为用户忘记做一些事情,想重新开始应用。为了防止丢失用户数据,我保存最重要的数据,只要我有机会,并保存其余的只有OnSuspending方法。 您需要考虑丢失时什么数据会让您的用户感到不安。

我认为微软应该得到保存应用程序状态的更好的方法。我搜查了很多关于这个问题,并没有找到解释,所以现在我会继续做我上面说的。我希望你提出的这个问题可以帮助我澄清这件事,在我看来,这是奇怪的情况。

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.Closed ByUser)`。 它的工作原理!

+0

你应该解释这是什么,并格式化代码 – letiagoalves

相关问题