为移动应用设置网络通话超时

时间:2018-09-19 23:04:06

标签: codenameone

关于在codenameone中设置超时,我有以下问题。请告知。

  1. 当移动应用尝试尝试连接到Internet或在Wifi /运营商网络之间切换时,我在应用上看到消息重试/取消。我已经为所有addToQueueandWait()请求设置了faililently()。仍然在对话框上看到此错误消息。有没有一种方法可以为用户设置超时或其他选项,使其不显示对话框(用户不断点击重试,直到网络连接后,任何方法都无效)。我该如何处理这种情况。

  2. 在这种情况下,设置“超时”是否是更好的选择?如果是,为请求设置比为NetworkManager设置更好?

  3. 对于Android和IOS设备而言,理想的超时时间是:大多数用户将锁定手机屏幕的时间设为1分钟到5分钟。

  4. 设置超时仅用于建立服务器连接,还是用于服务器的缓慢响应时间(20 ms有时需要1500 ms)。应用的登录过程会在设备无法连接到互联网且包含7-8个网络呼叫时花费时间。在这种情况下,将超时设置为请求级别还是网络级别更好?

  5. 超时会引发什么样的错误消息,这些错误消息可用于慢速连接/无连接。

谢谢

1 个答案:

答案 0 :(得分:1)

这是处理failSilently标志的代码。如您所见,是否定义了failSilently,该方法将返回。因此,要么您没有将failSilently定义为true,要么代码的其他部分将其设置为false。或者您有一个显示该对话框的网络错误侦听器:

protected void handleException(Exception err) {
    if(exceptionListeners != null) {
        if(!isKilled()) {
            NetworkEvent n = new NetworkEvent(this, err);
            exceptionListeners.fireActionEvent(n);
        }
        return;
    }
    if(killed || failSilently) {
        failureException = err;
        return;
    }
    Log.e(err);
    if(silentRetryCount > 0) {
        silentRetryCount--;
        NetworkManager.getInstance().resetAPN();
        retry();
        return;
    }
    if(Display.isInitialized() && !Display.getInstance().isMinimized() &&
            Dialog.show("Exception", err.toString() + ": for URL " + url + "\n" + err.getMessage(), "Retry", "Cancel")) {
        retry();
    } else {
        retrying = false;
        killed = true;
    }
}

一旦连接超时不适用,则在连接阶段发生超时。您将需要明确终止连接。因此,3可能无关紧要。

平台之间的超时行为不一致,通常我建议使用错误侦听器,而不是依赖错误结果,而是使用该代码来测试连通性。