2012-08-11 39 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

相關問題