【发布时间】:2013-10-25 17:56:54
【问题描述】:
我在客户端的 AsyncTask 中收到 Android 服务器的响应。
问题是,如何强制客户端等待服务器响应? Reson 有时可能需要几分钟服务器才能响应。
更具体地说,如何检测 socket.getInputStream.read() 是否不包含任何内容,并强制客户端进入等待循环?
【问题讨论】:
标签: android sockets android-asynctask client-server client
我在客户端的 AsyncTask 中收到 Android 服务器的响应。
问题是,如何强制客户端等待服务器响应? Reson 有时可能需要几分钟服务器才能响应。
更具体地说,如何检测 socket.getInputStream.read() 是否不包含任何内容,并强制客户端进入等待循环?
【问题讨论】:
标签: android sockets android-asynctask client-server client
我做了这样的代码
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 也有限制)。
【讨论】: