PhoneGap 脱机事件触发速度太慢



在我的PhoneGap应用程序中,我首先检查设备是否已连接到互联网,然后再运行代码和调用API等。

if (window.navigator.onLine == false) {
    //error handling
} else {
    //do stuff & call API
}

这完全有效,但如果设备失去连接并且在我断开连接后的 5 秒左右重新加载页面,代码仍然会触发并调用 API,尽管设备不再连接。如果页面在大约 5 秒后重新加载,则会按预期触发错误处理。

因此,在连接丢失后,看起来最多需要大约 5 秒才能更改为"离线"。我用离线事件仔细检查了这一点,它只是在这 5 秒后才被触发。

document.addEventListener("offline", onOffline, false);
function onOffline() {
    alert("now offline");
}

那么有没有办法在连接丢失或停用或其他情况下立即检查?

如果问题专门在于直接在页面加载时检查在线状态,请使用网络信息插件并在页面加载完成后直接调用函数:

function checkConnection() {
    var networkState = navigator.network.connection.type;
    var states = {};
    states[Connection.UNKNOWN]  = false;
    states[Connection.ETHERNET] = true;
    states[Connection.WIFI]     = true;
    states[Connection.CELL_2G]  = true;
    states[Connection.CELL_3G]  = true;
    states[Connection.CELL_4G]  = true;
    states[Connection.NONE]     = false;
    return states[networkState];
}

offlineonline 事件专门在应用程序使用后起作用。网络信息插件可以在触发deviceready事件后立即返回连接状态。

最新更新