none
Metro程序关闭时保存数据问题 RRS feed

  • 问题

  • 我希望在metro程序关闭的时候,可以保存用户的一些操作数据,当程序下次启动的时候加载这些数据。metro程序我只看到有个挂起事件,不知道又没事件是在用户关闭程序的时候触发的。如果没有,像上面这种情况该怎么处理?
    2012年8月1日 3:25

答案

  • Hi,

    SaveState事件在程序关闭的时候一样会触发,但用户关闭的程序会清空临时的会话数据,但是保存在LocalSetting中的数据是不会被清空的。在页面启动的时候无论挂起恢复还是第一次启动都会调用LoadState方法。而且可以在App中LaunchActivatedEventArgs中判断,用户关闭的话是args.PreviousExecutionState==ApplicationExecutionState.ClosedByUser

    通过这个就可以知道是否是用户关闭。

    Hope this helps

     


    Aaron Xue [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2012年8月1日 8:52
    版主

全部回复

  • Hi,

    SaveState事件在程序关闭的时候一样会触发,但用户关闭的程序会清空临时的会话数据,但是保存在LocalSetting中的数据是不会被清空的。在页面启动的时候无论挂起恢复还是第一次启动都会调用LoadState方法。而且可以在App中LaunchActivatedEventArgs中判断,用户关闭的话是args.PreviousExecutionState==ApplicationExecutionState.ClosedByUser

    通过这个就可以知道是否是用户关闭。

    Hope this helps

     


    Aaron Xue [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2012年8月1日 8:52
    版主
  • metro下有SaveState事件么,我也没找到LoadState方法,而且LaunchActivatedEventArgs中PreviousExecutionState式判断程序上次关闭是怎样关闭的。能不能附上相关代码
    2012年8月2日 1:21
  • 你是使用的Metro模板建立的工程吗?建立之后再MainPage.xaml.cs里都会有SaveState和LoadState方法。PreviousExecutionState的判断方法可以参考创建之后默认的App.xaml.cs中的代码OnLaunched方法中有写好的判断。

    你可以看看这个生命周期管理的教程:

    http://msdn.microsoft.com/en-us/library/windows/apps/hh986968.aspx


    Aaron Xue [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2012年8月2日 3:03
    版主