我在客户端的 AsyncTask 中收到了 Android 服务器的响应。
问题是,如何强制客户端等待服务器响应?Reson 有时可能需要几分钟服务器才能响应。
更具体地说,如何检测 socket.getInputStream.read() 是否不包含任何内容,并强制客户端进入等待循环?
我在客户端的 AsyncTask 中收到了 Android 服务器的响应。
问题是,如何强制客户端等待服务器响应?Reson 有时可能需要几分钟服务器才能响应。
更具体地说,如何检测 socket.getInputStream.read() 是否不包含任何内容,并强制客户端进入等待循环?
我做了这样的代码
boolean status;
// isURLReachable is the method to check server is available or not
status = isURLReachable(context);
if (status == true) {
h.post(new Runnable() {
@Override
public void run() {
checkLoginDialogue
.setTitle("Authenticating User");
}
});
handlerForLogin.sendMessage(handlerForLogin
.obtainMessage());
} else {
h.post(new Runnable() {
@Override
public void run() {
if (checkLoginDialogue.isShowing()) {
checkLoginDialogue.dismiss();
}
}
});
System.out.println("status IS " + status);
handler.sendMessage(handler.obtainMessage());
}
希望这有帮助
您可以从 AsyncTask 向客户端发送广播。
希望这会帮助你=)。
我已经停止使用 AsyncTask。相反,我使用带有 5 个固定线程池的 Android 的 ThreadPool 执行器:
ExecutorService executor = Executors.newFixedThreadPool(5);
Runnable worker = new ServerThread();
executor.execute(worker);
此代码位于客户端以及服务器端。优点是它比 AsyncTask 可靠得多。唯一的缺点是线程池的固定大小(但 AsyncTask 无论如何也受到限制)。