cordova - PhoneGap 离线事件触发太慢

标签 cordova events offline

在我的 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];
}

离线在线事件在应用程序使用时专门起作用。一旦 deviceready 事件被触发,网络信息插件就可以返回连接状态。

关于cordova - PhoneGap 离线事件触发太慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29081278/

相关文章:

javascript - 打开 Phonegap ChildBrowser 插件窗口只是为了网站身份验证?

java - 如何在我的 Android 应用程序中离线时保存数据?

android - 是否可以将 WebView 用作 html 阅读器(离线)?

javascript - 使用滚动顶部从 Controller 调用指令

android - 谷歌地图 : Embedding multiple locations and directions on a mobile app

jquery-mobile - Windows 8 Phonegap 应用程序 JQuery 移动安全异常

javascript - Redux 替代方案

java - 可以有多个 AWT 事件队列吗?

Javascript - 触发特定的键盘键

android - 如何在 Android 中创建离线第一个 RecyclerView?以及如何只更新最新的数据?