2

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

但是,在暂停状态下测试应用程序时,我注意到计时器一直在运行。我尝试通过以下方式暂停应用程序

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

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

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

谢谢。

4

1 回答 1

6

当应用程序暂停时,所有计时器都会暂停。我刚刚用这段代码验证了它:

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

    container.appendChild(content);
}

setInterval(timerFired, 1000);

当应用程序进入后台并暂停时(在暂停之前大约需要 15 秒),文本将停止附加。

注意:

  • 在调试器下,应用程序不会自动暂停,您必须单击暂停按钮(正如您所说的那样)。
  • 如果您在暂停后激活应用程序(例如单击它,或切换回它),如果它被暂停的时间长于定时器间隔,定时器将立即执行
  • 如果您正确播放背景音频,那么您的计时器仍将运行,因为您在播放背景音频时不会暂停
于 2012-08-11T19:30:38.277 回答