Javascript 在应用程序don';t对应于实际经过的秒数

Javascript 在应用程序don';t对应于实际经过的秒数,javascript,cordova,time,Javascript,Cordova,Time,我正在使用cordova制作一个游戏,我需要计算用户退出应用程序和用户重新打开应用程序之间的时间差(以秒为单位)。 以下是我实现这一目标的代码: var date = new Date(); var currentTime = date.getTime(); var lastTime = parseInt(window.localStorage.getItem('lastTime')); var timeDifference = Math.round((currentTime - lastTim

我正在使用cordova制作一个游戏,我需要计算用户退出应用程序和用户重新打开应用程序之间的时间差(以秒为单位)。 以下是我实现这一目标的代码:

var date = new Date();
var currentTime = date.getTime();
var lastTime = parseInt(window.localStorage.getItem('lastTime'));
var timeDifference = Math.round((currentTime - lastTime)/1000 );
lastTime等于用户退出时执行的date.getTime()


问题在于,时差实际上并不保留上次退出后经过的秒数,而是保留了更大的值。

您应该使用暂停/恢复事件:

function onLoad() {
    document.addEventListener("deviceready", onDeviceReady, false);
}

// device APIs are available
//
function onDeviceReady() {
    document.addEventListener("resume", onResume, false);
    document.addEventListener("pause", onPause, false);
}

// Handle the resume event
//
function onResume() {
    var date = new Date();
    var currentTime = date.setTime();
    var lastTime = parseInt(window.localStorage.getItem('lastTime'));
    var timeDifference = Math.round((currentTime - lastTime)/1000 );
}

// Handle the pause event
//
function onPause() {
    var date = new Date();
    var currentTime = date.getTime();
    window.localStorage.setItem('lastTime', currentTime);
}

请参阅cordova文档。

如果您共享currentTime、lastTime和timeDifference的预期值和实际值,可能会有帮助,因为我无法预测时间。如果用户退出应用程序,则退出的时间以毫秒为单位。当用户再次打开应用程序时,他退出应用程序的时间与他打开应用程序的时间之间的差异将被确定。将此结果除以1000应给出自用户上次退出后经过的秒数。实际样本为:lastTime=1442067696551;currentTime=1442067707287;时间差=11.OK,因此显示应用程序关闭和再次打开之间的10.736秒。您在原始问题中说过,时间差的值比您预期的要大得多。你在期待什么?关闭和重新启动应用程序之间的时间间隔是多长?11秒似乎不是很长的时间,关键是我只是在1秒或2秒后关闭并打开了应用程序。时差不应为11秒。这在应用程序置于后台时很有用,但我指的是实际退出应用程序。在应用程序关闭之前,会触发暂停事件。