我是 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/