java - 当服务器出现时间延迟时,如何避免 Android 中的 ANR 响应?

标签 java android web-services android-anr-dialog

我是 Android 新手,但我对 Java 和 Java EE 有一定了解 在与服务器(webservice)通信时,它与我从中得到的响应配合得很好。 但如果有任何时间延迟超过 5 秒,就会ANR。现在我的问题是如何检查我的 java 功能,以了解服务器是否响应。有什么想法吗?

甚至一些相关示例也会对我有所帮助。

代码 fragment

Handler handler = new Handler(); 
handler.postDelayed(new Runnable() { 
    public void run() { 
             // Problem is if Server is not Working , it delays and the UI wents to ANR 
              if(  sendToWebservice(String_to_send)=="fromWebservice") {
                Toast.makeText(context, "Connected", 500).show();

              }
             else {
                Toast.makeText(context, "Not Connected,Try again ", 500).show();
                finish();
            }
     } 
    }, 5000); 

附加信息: 我正在使用 jax.ws 在 Android 中创建 webservice 和 ksoap api 。 提前致谢。

编辑

if(  sendToWebservice(String_to_send).equalIgnorecase("fromWebservice") instead of ==

我在将其框架化为语法时错过了将其放入此处..!!

最佳答案

首先, 这个条件应该是,

if(sendToWebservice(String_to_send).equals("fromWebservice")) 

现在进行ANR

您可以在 HTTP 请求中设置响应超时,这样,如果存在时间延迟,您会从服务器获得超时响应,如果可能的话,还可以在任何情况下显示一些进度对话框 Web 服务调用已在 UI 线程中进行,而您的 Web 服务调用则在其他工作线程中进行。

关于java - 当服务器出现时间延迟时,如何避免 Android 中的 ANR 响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9494675/

相关文章:

java - Apache HTTPClient SSLPeerUnverifiedException

java - Selenium同时控制多个浏览器

android - 是否可以从手机设置中授予 Nearby API 权限?

android - 将android studio项目迁移到eclipse

java - 有没有办法在桌面应用程序中转换 Android 应用程序?

java - Jersey 休息服务显示异常 javax.ws.rs.WebApplicationException : javax. xml.bind.MarshalException

java - 可以使用 @Autowire @Service beans 但不能使用 "new"关键字实例化类的成员 - 即使配置了上下文扫描

连续调用 javax.xml.ws.Service.getPort() 导致 PermGen 中的 OOM

java - 如何使用 wsimport 从 WSDL 文件中仅获取源文件

java - 如何在 1 个测试类中使用相同的方法测试多个对象?