我要求这么做, 如果用户关闭了窗口, 我就停止动态磁贴
如果用户是放到后台就不停止
因为 Windows::UI::Xaml::Window::VisibilityChanged 是在OnSuspend的之前发生的 所以 在OnSuspend里做的话,还是会显示动态磁贴 过10S才执行 tile.clear
请问 该如何做?
首先一点,在metro中,我们不建议开发者通过编程的方式关闭程序的。虽然用户可以通过特殊的手势或者Alt+F4去关闭程序,但是,在metro里面没有特殊的事件对应Closed的事件的。我们需要通过Suspending 事件来做程序数据的序列化工作。
另外,至于触发Suspending 事件的时间,文档上也没有明确的说明,应用程序的生命周期是由操作系统来控制的,我们只需要在对应的事件里面做好序列化和反序列化的工作就可以了。
关于应用程序的生命周期,请参考
http://msdn.microsoft.com/en-us/library/windows/apps/hh464925.aspx
关于挂起的时间,请参考
http://social.msdn.microsoft.com/Forums/zh-CN/metroappzhcn/thread/cd17954e-5ce3-4124-b42d-c4ef5f94aacf/
如果实在是需要Close的事件,可以尝试一下background task的方法
用background task 去获得应用的ApplicationExecutionState 属性,我们可以获得ClosedByUser | closedByUser ,NotRunning | notRunning等状态,这就需要我们每隔一段时间去检查这个状态
Jesse Jiang [MSFT] MSDN Community Support | Feedback to us