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 に答える