首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为移动应用程序设定网络呼叫超时

为移动应用程序设定网络呼叫超时
EN

Stack Overflow用户
提问于 2018-09-19 23:04:06
回答 1查看 948关注 0票数 1

我有以下几个问题,设置超时的代码。请指点。

  1. 当移动应用程序试图连接互联网或在Wifi/运营商网络之间切换时,我在应用程序上看到消息重试/取消。我已经为所有的addToQueueandWait()请求设置了故障静默()。但是我仍然在对话框中看到了这个错误消息。是否有一种方法,我可以设置超时或其他选项,让用户不显示对话框(用户继续点击重试,没有任何工作,直到网络连接)。我该怎么处理这种情况。
  2. 在这种情况下,设置超时是更好的选择吗?如果是,为请求设置比为NetworkManager设置它更好?
  3. 对于Android和IOS设备来说,什么是理想的超时时间,因为大多数用户都有1分钟到5分钟的时间锁定手机屏幕。
  4. 设置超时仅适用于建立服务器连接,还是用于服务器的响应时间较慢(有时20 ms需要1500 ms )。应用程序的登录过程需要时间,当设备有问题连接到互联网时,它包括7-8网络calls.Is,在这种情况下最好将超时设置在请求级别或网络级别。
  5. 超时可以引发什么样的错误消息,并且可以用于慢速连接/无连接。

谢谢

EN

回答 1

Stack Overflow用户

发布于 2018-09-20 06:38:38

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

代码语言:javascript
运行
复制
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可能与此无关。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52415277

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档