none
程序能否监听被切换回后台的状态或者事件 RRS feed

  • 问题

  • 如题,程序能否监听到被切换回后台(注意:不是Suspending挂起状态),按Windows开始键以后,程序会被切换到后台(但是此时可能还处于运行状态,只有在后台一段时间以后才会被挂起),我想问的是能否在被切换到后台监听到该事件(记得Wp7 有个Deactivated事件,但是Win8好像去掉了)?

    还有,程序被关闭的时候,是否有系统事件通知应用程序?

    期待你的回复,tks!

    2012年8月22日 4:21

答案

  • Hi,

    切换这个状态你可以使用CoreWindow.Activated事件监听到。具体写法:

    Window.Current.CoreWindow.Activated+=CoreWindow_Activated;

    这个事件是监听程序Activated或者Deactivated的,可以通过事件传递的WindowActivatedEventArgs来判断,Activated的时候是CodeActivated,Deactivated的时候是Deactivated。

    还有你也可以通过VisibilityChanged时间来监听,两个具体差别是只要切换屏幕按钮被按下这个就被触发,而上一个则会稍微迟一下触发(小于1秒),个人认为应该是程序转到后台运行之后会触发Activated事件(不是Suspending)。具体你可以参考CoreWindow文档:

    http://msdn.microsoft.com/library/windows/apps/BR208225


    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.

    • 已标记为答案 renfei 2012年8月23日 8:25
    2012年8月23日 8:13
    版主

全部回复

  • Hi,

    切换这个状态你可以使用CoreWindow.Activated事件监听到。具体写法:

    Window.Current.CoreWindow.Activated+=CoreWindow_Activated;

    这个事件是监听程序Activated或者Deactivated的,可以通过事件传递的WindowActivatedEventArgs来判断,Activated的时候是CodeActivated,Deactivated的时候是Deactivated。

    还有你也可以通过VisibilityChanged时间来监听,两个具体差别是只要切换屏幕按钮被按下这个就被触发,而上一个则会稍微迟一下触发(小于1秒),个人认为应该是程序转到后台运行之后会触发Activated事件(不是Suspending)。具体你可以参考CoreWindow文档:

    http://msdn.microsoft.com/library/windows/apps/BR208225


    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.

    • 已标记为答案 renfei 2012年8月23日 8:25
    2012年8月23日 8:13
    版主
  • 感谢Aaron Xue,这个解决方案是可行的。

    还有个问题,顺道问一下,就是如果程序退出(后台很久无操作,系统关闭,或者任务管理器关闭),有没有事件通知?

    目前我的想法是增加一个app的析构函数,在这里面操作一下,但是感觉别扭。

    2012年8月23日 8:28
  • Hi,

    你可以看一下CoreWindow中的Closed事件,这个是在程序被终结的时候触发。


    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月23日 8:47
    版主
  • Closed 事件从来都不会触发的,我试过的,不过在侧边栏点关闭没试过
    2012年8月23日 9:35
  • 经过测试Closed 事件在侧边栏点关闭也是不触发的,看来要另寻他路了。

    另外,使用代码获取应用程序名字(或id)的api,貌似也找不到了,有谁知道么?

    2012年8月24日 2:16