2012-08-11 42 views
2

我有一个WinJS应用程序,它包含一个计时器对象。我从msdn文档中读到,从用户导航到另一个应用程序5秒后,我的应用程序将被挂起,之后我的应用程序将停止运行。WinJS应用程序在暂停时仍然运行

但是,在测试处于挂起状态的应用程序时,我注意到定时器继续运行。我试着通过

  1. 暂停应用程序单击从VS2012调试窗口中的“暂停”按钮,
  2. 手动运行我的应用程序,导航到另一个应用程序,并等待一段时间(10分钟)得到它暂停。

但是在这两种情况下,定时器都保持运行。我预计它会在暂停时停止,并在恢复时同时恢复,但它会正确显示经过的时间。

我很感激,如果有人能解释这种行为。我正在运行Windows 8 Release Preview。

谢谢。

+0

你能澄清你的计时器是什么意思吗? – 2012-08-11 06:43:01

+0

抱歉,计时器是我给它的名字。这是一个有setTimeout引用变量的对象,我用它作为倒数计时器。 – prabu 2012-08-11 10:56:29

+0

它在你被暂停执行时触发,执行代码?当你退出暂停状态时,计时器将会启动,它不会被取消。当你从暂停状态回来时,它会发射。我建议用调试器进行测试。 – 2012-08-11 15:47:14

回答

6

所有计时器在应用程序暂停时暂停。我只是使用此代码验证它:

function timerFired() { 
    var container = document.getElementById("timeroutput"); 
    var content = document.createElement("div"); 
    content.textContent = Date.now(); 

    container.appendChild(content); 
} 

setInterval(timerFired, 1000); 

当应用程序进入后台,并且暂停(这需要它暂停约15秒钟后),文本停止被附加到。

需要注意的是:

  • 虽然在调试器下的应用程序是自动暂停,你必须点击暂停按钮(如你说你正在做的)。
  • 如果激活后悬挂应用(例如点击它,也可以切换回吧),定时器将执行立即如果它被暂停的时间为比计时器间隔
  • 如果您无法正常播放背景音乐,那么你的计时器仍然会运行,因为你不会在你播放背景音频时被暂停
+0

我刚刚试过你的代码,发现应用程序确实被暂停,它似乎不是的原因是我有一个新的Date对象,每次在用于计算经过时间的回调中创建。一旦应用程序恢复运行,它会显示正确的运行时间(因为正在创建一个新的Date对象,以恢复),愚蠢的我!非常感谢您的回答,如果不是您的答案,我可能从来不会更仔细地仔细观察。 – prabu 2012-08-11 19:59:52

相关问题