Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 8 挂起时WinJS应用程序仍在运行_Windows 8_Winjs - Fatal编程技术网

Windows 8 挂起时WinJS应用程序仍在运行

Windows 8 挂起时WinJS应用程序仍在运行,windows-8,winjs,Windows 8,Winjs,我有一个WinJS应用程序,其中包含一个计时器对象。我从msdn文档中读到,当用户导航到另一个应用程序时,我的应用程序将在5秒钟后暂停,之后我的应用程序将停止运行 但是,在暂停状态下测试应用程序时,我注意到计时器一直在运行。我已尝试通过以下方式暂停应用程序: 从VS2012调试窗口中单击“挂起”按钮,然后 手动运行我的应用程序,导航到另一个应用程序并等待一段时间(10分钟)使其挂起 但在这两种情况下,计时器都会一直运行。我希望它在暂停时停止,并在恢复的同时恢复,但它正确地显示了经过的时间 如果有

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

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

  • 从VS2012调试窗口中单击“挂起”按钮,然后
  • 手动运行我的应用程序,导航到另一个应用程序并等待一段时间(10分钟)使其挂起
  • 但在这两种情况下,计时器都会一直运行。我希望它在暂停时停止,并在恢复的同时恢复,但它正确地显示了经过的时间

    如果有人能解释这种行为,我将不胜感激。我正在运行Windows8版本预览


    谢谢。

    应用程序挂起时,所有计时器都将挂起。我刚刚用这个代码验证了它:

    function timerFired() {
        var container = document.getElementById("timeroutput");
        var content = document.createElement("div");
        content.textContent = Date.now();
    
        container.appendChild(content);
    }
    
    setInterval(timerFired, 1000);
    
    当应用程序进入后台并挂起时(挂起前大约需要15秒),文本将停止附加到应用程序

    请注意:

    • 在调试器下,应用程序不会自动挂起,您必须单击挂起按钮(如您所说)
    • 如果在暂停后激活应用程序(例如,单击或切换回应用程序),如果暂停时间长于计时器间隔,计时器将立即执行
    • 如果正确播放背景音频,则计时器仍将运行,因为播放背景音频时,不会被挂起

    你能澄清一下你所说的定时器是什么意思吗?对不起,定时器是我给它起的名字。它是一个对象,有一个setTimeout引用变量,我用它作为倒计时。它在你挂起时触发,执行代码?当你从暂停状态出来时,计时器会自动关闭,不会被取消。当你从停赛中回来时,它就会开火。我建议在不使用调试器的情况下进行测试。是的,即使应用程序处于挂起状态,也会触发回调,根据微软的说法,这是不应该发生的。事实上,我很高兴它在挂起时运行,因为这意味着我的工作量减少了(无需跟踪应用程序的状态),但我不知道我是否可以依赖这种异常行为。我只是尝试了你的代码,发现应用程序确实被挂起了,之所以看起来不是这样,是因为我每次都在回调中创建了一个新的日期对象,用于计算经过的时间。一旦应用程序恢复运行,它就会显示正确的运行时间(因为恢复时创建了一个新的日期对象),我真傻!非常感谢你的回答,如果不是因为你的回答,我可能永远都不想看得更仔细。