关于在codenameone中设置超时,我有以下问题。请告知。
当移动应用尝试尝试连接到Internet或在Wifi /运营商网络之间切换时,我在应用上看到消息重试/取消。我已经为所有addToQueueandWait()请求设置了faililently()。仍然在对话框上看到此错误消息。有没有一种方法可以为用户设置超时或其他选项,使其不显示对话框(用户不断点击重试,直到网络连接后,任何方法都无效)。我该如何处理这种情况。
在这种情况下,设置“超时”是否是更好的选择?如果是,为请求设置比为NetworkManager设置更好?
对于Android和IOS设备而言,理想的超时时间是:大多数用户将锁定手机屏幕的时间设为1分钟到5分钟。
设置超时仅用于建立服务器连接,还是用于服务器的缓慢响应时间(20 ms有时需要1500 ms)。应用的登录过程会在设备无法连接到互联网且包含7-8个网络呼叫时花费时间。在这种情况下,将超时设置为请求级别还是网络级别更好?
超时会引发什么样的错误消息,这些错误消息可用于慢速连接/无连接。
谢谢
答案 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
可能无关紧要。
平台之间的超时行为不一致,通常我建议使用错误侦听器,而不是依赖错误结果,而是使用该代码来测试连通性。